Calabash iOS Links


Hey guys, so I decided to put together a list of links that really helped me when I was first getting going with Calabash, specifically Calabash-ios.  Hope they help you as much as they helped me.  If you have any links that you feel helped you  please let me know. and we can add them to the list.

Calabash-ios GitHub Home

The Ruby Api

This will show you the syntax for writing custom steps and using Calabash-ios console.

Query Language

Calling Steps from Steps Definitions

Calabash Public API – Very Helpful

To get going with RVM and Ruby


Advertising Your App Yourself – Part 1


So you and your group of friends finally got that dream app developed and you’re sooo excited about finally launching it and having millions of users download your app immediately.  But how quickly the fanciful money bubble is popped by the sharp needle of reality.

After a month of your app on the App Store, you have 10 downloads, and 9 of them were by friends you asked to download it.  Bummer…So what do you do than?  Do you give up, feeling like your app is horrible and there’s nothing you can do?  Do you pay an advertising agency thousands of dollars to advertise for you?  Nope! I’ll show you how to get off the ground fast!  Here’s a list of things to remember:

Meet people personally

In the mobile, digital age today, many people just don’t appreciate the value of personal interaction with potential customers.  If people see a Tweet from your mobile device, there’s a low chance that that will turn into a customer who actually uses your mobile app.  However, when a person gets a chance to see the man behind the mobile app; the tenacity, the drive, the diligence; they’re much more apt to invest in you, rather than just your mobile app.

So get out there and meet people.  Figure out who your potential client is, print out some fliers and business cards with a QR Code to download the app, and start handing them out.  If your targeted audience is college students, than go to the nearest college to you and start there.

  1. Print out business cards and fliers with your app info on it and a QR Code to direct them to the appropriate App Store
  2. Go to high volume areas and pass out your business cards and fliers for your Mobile App
  3. Strike up conversations with people and explain the Mobile App a little bit to them to increase their likelihood of downloading your Mobile App.

Get Beta Testers

The really good thing about Beta Testing, is that it seems cool to be a Beta Tester.  People want to be part of projects, especially mobile apps.  When it comes to advertisement, Beta Testers can be the best.  So offer some cool perks to people to try and motivate them to help you with your project.  Allow them to use different aspects of the app for free.  Let them give feedback and actually incorporate some of their feedback within the app.

Look at the Pyramid Scheme, why is it so successful, because your create millions of advertisers.  So remember, an actual user is the best advertiser you will ever have.  So do the following:

  1. Go to QuickMVP and set up a quick landing page prompting users to become beta testers, it takes maybe 10 minutes.
  2. Offer some cool perks for being a beta tester like allowing them to posts for free forever
  3. Offer incentives to those who invite others to use the app
  4. Keep a good relationship with your beta testers by responding to their concerns and implementing some of their ideas.
  5. Tweet like crazy and include a link to your website to allow people to be Beta Testers

Use Social Media Wisely

Social Media can be a great tool when advertising your Mobile App, but it has to be done correctly.  How do you do this?

  1. Instead of having a ton of followers who have no idea who you are, and you don’t know who they are, try to engage your followers by having interesting tweets, and starting conversations with them.
  2. Try to focus on those whom you know personally first.  If you can get your Mobile App in the hands of 100 friends, that can turn into 10,000 quicker than you think.
  3. One tweet is useless, you will really need about 100 tweets to get any kind of real responses.  So it will literally take 1000’s of tweets to really get your name out there, and even then, you need a ton of followers.
  4. Try to get more people to follow you on Twitter, Facebook, and Instagram.  Until you have over 1000 followers, you’re really not going to get any kind of substantial network.  But remember, try to engage with these followers.
  5. Start getting followers before you’ve even developed the app.

Spread the Word in Your App

This is the last step we’re going to speak about.  Within the app, you’ve got to create a way for users to really share with their friends.  How can you do this?

  1. Make sure you have a feature allowing people to invite their friends through their favorite form of Social Media
  2. Offer special perks if they invite people.  For example, maybe a certain feature of your app can only be unlocked once you’ve invited your friends.
  3. Offer the user the ability to invite friends at various times in the app using experience.  For example, if they want to do something in the app that cost money, let them know they can do this for free if they invite friends.  Don’t make this annoying though.  If you are always reminding the user to do this it will get frustrating.

This is just the beginning, but I guarantee if you do this, you’ll be happy with the results.  Always remember though, you have to be diligent about this.  If you’re lazy and do this for a week or two, you’re not going to have anything successful, so make sure you stay at this and work as hard as you can with it.  You’ll find that your downloads will slowly begin to climb.

Take a look at these other articles for help too:

Become a Beta Tester for an app I’m building right now


Diligence: The Mother of Success



In any field of work, diligence is essential for success. You can be brilliant, but without diligence, you’ll go nowhere. So what is diligence and why is it so important?

One definition of diligence is “constant and earnest effort to accomplish what is undertaken; persistent exertion of body or mind.”

There are a few words here that are essential and they are, constant, and persistent. In the development world, and many other jobs, many people put forth constant effort and exert their body or mind, but not to the point of accomplishment. Many people will work hard up to a certain point, and then the exertion stops. This is where those succeed and those who don’t are separated. The diligent will brace up their minds and accomplish their goals, and finish their products not just ok, but well.

So if you want to be successful, especially in programming, work on becoming a diligent person. In the next article I’ll explain how to acquire this quality.

Great App vs Good App: Quality over Quantity


Quality over Quantity

When the app store first opened, there were very few apps in existence, and many of them were quite ridiculous. Apps such as the Fart App were at the top of the app store, and quite frankly, it was easy to create something that could become a quick success.

But something happened. As more and more people built applications, it became more and more difficult to create an app that is considered, great! This is good and bad. It’s bad because it’s become more difficult to compete. But it’s good because now you have to be very serious about your craft in order to create a competitive application, which means that it filters out a lot of developers who really aren’t that serious about what they do.

So now, why the title, quality over quantity? Well, it’s a fact that humans are excited about new stuff; new features, new designs, new everything. As a developer, or simply someone who wants to make an app, it can be easy to get caught up in the madness of wanting “new” features. Most apps that begin to be developed are never finished because people simply want to do too much. So what’s wiser, is actually to focus on the quality of the features you have, rather than the quantity of features, in order to be competitive.

Now how can you do this?

Well make sure that as you implement new features, it’s polished before you move on. Always go for the wow factor. For example, instead of just having an alert box pop up to display something to the user, why not add an animation that displays the information in an eye catching way. Make sure that every little detail is well thought out for the feature. Make sure that it’s not only functional, but beautiful. Then after you’ve done this; move on. Don’t wait for perfection, but just make sure that it’s as good as you know you can make it before advancing.

This will take your app from good, to great.

What does it take to be a good developer? Part 1


Good development

“Any darn fool can make something complex; it takes a genius to make something simple.”
― Pete Seeger

Being a good developer takes time, patience, but most importantly attention. What do I mean? Well you can be patient, and develop for years, and never really quiet get past a certain level of skill. So here’s what I feel will help you to become a better developer.

1. Why should you try to understand what it is you’re doing?

It’s very important to understand not just what you’re doing, but why you’re doing it. For example, if you’re using a new API or SDK that you’re not too familiar with, try to understand how that API or SDK works. Find out how the platform you’re developing for works. Read up on it, then once you start implementing, you’ll be more capable of dealing with issues. Also, the more you understand, the more it will help in the future when using other platforms and services. So try to understand as much as possible about what you’re using, don’t just learn enough to get a job done. A good way of doing this is to set aside one day a week, or a few hours at least of simply research.

2. Why is simplicity so important?

When writing code, as developers we always try to do things in the most efficient way, but sometimes we get preoccupied with trying to make things so advanced to impress ourselves or others, and we forget that simple code is often times better. When writing code, I’ve often had people tell me that my code is easy to understand. It’s not because I’m implementing techniques that show advanced intelligence, but simply because my code is written simple.

So remember. Simple, simple, simple. Short, properly named methods, good commenting, robust code, well architected are what you’re looking for. So search online to see what can make your code better.

Start implementing these things and you’ll notice that you’re skills as a developer will increase dramatically over a short period of time.

From Idea to Conception – The Road of Warriors



So you have an idea, great!  But at this point, even if your idea is amazing, nothing separates you from the billions of other people out there who also have a GREAT idea.  Ideas sadly are easy to come across, it’s execution where true success becomes attainable.  So how do you go from an idea, either yours or someone else’s, to an actual profitable product.  The answer lies just below.

Step 1 – Create a concrete idea


It is very common that people who have an idea don’t necessarily have something that they can do anything with.  For example, a persons idea may be: “Wouldn’t it be awesome if we could share pictures with a whole bunch of people at the same time.”  This is an awesome idea, but with just this line, you’re a far cry from Instagram.  So what needs to be done, is the idea needs to be actually thought out in terms of, what exactly do we want this concept to achieve, and how?


So for example, the idea is: “Wouldn’t it be awesome if we could share pictures with a whole bunch of people at the same time.” Now try and answer these questions:

Why? – Why is this idea a necessary need?

People love sharing pictures, but they always have to send pictures to friends, or invite them over to watch a slideshow.  Often times, people just don’t have the time to do this, and their friends never get to share in this experience.

How? – How do you hope to satisfy this need?

We will allow the most simple way to post images using an app, and allow friends and family, and potentially anyone else who wants to view these images to view them using the app.

What? – What will you do to satisfy the need?

It will be a social networking application.  Users will be able to post images using their account.  When users like their image, they can in an easy way say that they like the image and leave a comment if they would like.  You can invite friends to view your images, or you can make the images public so that everyone can view them.

Those few lines above are now a concrete idea.

Step 2 – Create your plan of attack

How are you going to take this from an idea to an application/website?  Here is where decide things such as: Will I develop this myself, or will I hire someone else to do so for me?  Will I hire someone overseas, or do I want to work with someone here?  How much do we want to spend on this?  Should we try and get investors, or some sort of funding, or should we try to do this out of pocket? (You should probably go with funding btw)  Should we make this application run on all platforms?  Should we hire different developers for different areas, or should we hire one developer who can do it all?  How much do we WANT to spend on this?

This is when things start to get serious!  Now you’re going from just an idea, to actual work.  Most people will stop by this step if they’re not serious, especially as they start to do research on the cost of development.

Step 3 – Simplify the idea

“It’s easier to do 2 things great, than it is to do 20 things good.”

What does that mean?  Well, put simply, if you try and create a product with 20 premier features, you’re almost bound to have an extremely buggy app, with poor user experience on the first go around.  But if you just have a very small amount of features, you can focus on these, and knock ’em out the park.  So you have to simplify the idea.  Find out what your app’s nitch is, and then try to focus only on that.

For example, back to our Instagram example.  Maybe you want to allow users to post videos, and audio, and make a lot of edits to their images.  And then you want people to be able to save certain images as favorites, and have facial recognition to be able to tell if any of your Instagram friends are in the image, etc, etc, etc.

Now that may sound awesome, but if you try and do all that, you’ll spend a lot of money and time on a product that you don’t even know if it’s going to do well or not.  Save those features for later when your product is very popular, and you can implement them one at a time.  But for now, just focus on posting images, commenting, and liking those images.

Step 4 – Wireframes, Blueprints & Mockups

You’re probably very anxious to start developing this thing as soon as you get a developer.  But you want to hold off on that and get some wireframes and mockups first.  Wireframes basically are the skeleton of the application.  Where will buttons, text boxes, labels, icons, images be placed etc.  Wireframes typically are in greyscale because you still haven’t decided on all you want graphically.  But a wireframe will give you what the overall product layout will be.  After you do the wireframes, you draw out a blueprint.  This blueprint contains everything that has to do with the User Experience.  Explaining what each button does, and how all screens work together.  Here’s a sample of a beautiful blueprint from

Fueled Blueprint

Fueled Blueprint

After you’ve done the Blueprint, you do the mockups.  The mockups are the images of the way different screens will actually look within the application.  By the end of the mockups, basically you know exactly what the app will look like.  Here’s another example from

Elevatr app by Fueled Mockups.

Elevatr app by Fueled Mockups.

Once you have the mockups you’re ready to develop right? Almost, but no.  Now you need to polish the application.  Polishing the application is the final touch that only some designers/developers will do.  Here we perfect the design, and make sure that it contains all the animations, and transitions perfectly as desired.  This is the step that people who truly value their craft will take.  This is the step that will take your app from, ‘ooh’, to ‘aaaaahhhh’, and take you from the path of common men, to the roads of kings.  From a good app of our time, to a product of legend.  Yes, this is the step of all steps!

Honestly though, this is important, because it puts you right above the competition, because most people don’t do this.  Check out this video to see how fueled does it.

Step 5 – Develop it

Now, develop the application.  You’ve got everything decided, now you simply implement.  Either do this yourself, or get someone else, but you should have already decided that by now.

Step 6 – Test and Make revisions

Great apps have been thoroughly tested.  So make sure that you test as much as possible, and with as many people as possible.  Give it to old people, young people, programmers, artists, fast food workers, bank tellers, CEO’s.  Everyone will use your app, so everyone needs to test it to make sure that it’s good.  Keep making revisions and testing until you have a GREAT product.

Step 7 – Market and Ship

After all that hard work, now comes the time you’ve been waiting for.  Ship that beast!  Push it to whatever stores it needs to go to.  Now notice though, I put market first.  That’s because you should start getting the word out there before the product is shipped.  That’s because you want people to be kind of expecting it, that way you won’t lose momentum once it’s live.  There’s a ton of ways to market your product, look here for some advice.

And viola, you have now taken your product from nothing, to something!

phantomjs phantomjs: error while loading shared libraries: cannot open shared object file: No such file or directory


I was receiving this error after installing phantomjs on my Linux Vagrant Instance.  The fix was very simple.  Just entered the following line and it worked.

sudo apt-get install libfontconfig

So basically just had to make sure that libfontconfig was installed.  Found the fix here.

Chef-Apply Mac OS X Issue


I was having an issue wherein when I ran chef-apply hello.rb as instructed on the chef tutorial I received a long error message:

/opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs’: Could not find chef (>= 0) amongst [activesupport-4.1.1, activesupport-3.2.18…and then a ton more

The way I fixed this issue was simply to type:

rvm reset

Not too sure as to why this works, but it fixed my problem, and hopefully will work for you.

Cocoapod Error After Computer Restart


For some bizarre reason I was getting this error after I restarted my mac.  I finally figured a way to fix the issue, maybe it’s a hack, but it works.


/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs’: Could not find ‘cocoapods’ (>= 0) among 92 total gem(s) (Gem::LoadError)

from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec’

from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem’

from /usr/bin/pod:22:in `<main>’


1.  Uninstall cocoapods – gem uninstall cocoapods

2.  Enter into command prompt – /bin/bash –login

3.  Install ruby 2.0

4. Switch to ruby 2.0

5. rvm reset

6. Reinstall cocoapods – gem install cocoapods

Helios – Could not connect to database


Error connecting to database: “PG::ConnectionBad: could not connect to

server: Connection refused

Is the server running on host “localhost” ( and accepting

TCP/IP connections on port 5432?

could not connect to server: Connection refused

Is the server running on host “localhost” (::1) and accepting

TCP/IP connections on port 5432?

could not connect to server: Connection refused

Is the server running on host “localhost” (fe80::1) and accepting

TCP/IP connections on port 5432?”

To fix this error I had to:

1) Install Postgresql on my machine using Homebrew.

2) Enter brew info postgres into the command line to receive help for postgres.

3) Run the line that this help doc said to run – postgres -D /usr/local/var/postgres

4) Then fire up Helios.