Finishing Is All That Matters

Posted November 3, 2011 under News

I’ll be one of the first to admit that I am bad at finishing things. There are a million things I’d like to do and while I start plenty, very rarely do I finish things. Typically, I’ve already finished the hard part and am no longer interested in doing that last easy 10%.

Now when I say “finish” I don’t mean to completion. Nothing is ever complete and you should make sure you realize that as well. There are always a handful of things you’d like to improve given the time or money. But that’s not important.

The image above is the Ship It Squirrel that has been a big part of the culture at Github. People love Github and you want to know why? They’re constantly shipping things. I mean, hell, I’ve seen Kyle Neath go from suggestion via Twitter to shipping that feature in 30 minutes. That’s seriously awesome.

You can be that awesome too. Here are some things I find helps considerably:

Realize nothing is ever perfect

If you’re not consciously aware of this fact, you’re bound to become lose motivation eventually. You’ll buckle down so hard trying to make things perfect that you burn out. Pick those couple things you’d have to have, and everything else goes on the backburner. If you get some new idea, write it down on a piece of paper and get back to the important bits.

Be persistent

No matter how badly things are going, think of your blessings. Hell, you have a computer and the internet. That’s enough to be thankful for right there. Plenty of other people in the world are trying to find food for day. Your troubles are probably not as bad as you think.

Don’t give up. Ever.

Limit yourself

Deadlines can be incredibly motivating. Use them to make sure you work twice as hard. When we have deadlines at work, I am almost four times as productive those days because I know things have to be done. Set deadlines on your calendar. Take them seriously.

No distractions

If you’re a habitual email checker, block it. If you find yourself easily distracted with something, block it or remove it. Put on headphones and find a quiet corner to work in and forget about the world around you.

Surround yourself with likeminded people

Find someone to support you. Sometimes this is as easy as a friendly reminder from someone on twitter. Maybe it’s a reminder from your spouse or significant other. Whomever it is, find someone that you look up to. It will make you want to impress them. They will be excited about what you are doing and you will be excited that they are excited. Before you know it you’ve built an endless loop of motivation.

Work on side projects in the morning

Some days at work are worse than others. Every job is like that. If you find yourself coming home and unmotivated, try working on your idea in the morning. Get up 2 hours earlier and work then. You’ll have a fresh mind and be able to accomplish more than 4 hours with a clouded mind in the evening.

Remember that guy that gave up? Neither does anybody else.


Psych::SyntaxError: couldn’t parse YAML at line

Posted October 31, 2011 under News

Working today I ran into an interesting bug. I was using the Zencoder gem to work with their API (I’d protect in the prison showers good) and ran into this error

Psych::SyntaxError: couldn't parse YAML at line 1 column 37

What was odd is that this error came from a JSON parsing line of code inside the zencoder gem. I’m still not 100% sure why the ActiveSupport::JSON.decode call uses a YAML parser but I’m sure I’ll find out later.

So anyways, back to getting your crap running again. From what I gathered, the JSON being returned likely included a special character that Psych freaks out on.

Ruby has a couple YAML parsers, and typically uses Psych. The link above mentions that putting the special characters in double quotes fixes that error for him. In my case, I wasn’t controlling the JSON so that solution was out the window.

The fix for this is to use a different YAML interpreter like so in your config/boot.rb if you are using Rails, or anywhere at the beginning of your ruby project:

require 'yaml'
YAML::ENGINE.yamler = 'syck'

Give Things Away

Posted October 27, 2011 under News

Giving services, software, or anything else of significant value away is good for you business.

That seems counterintuitive. You say you’re just giving away your business and that you can’t make money because it’s free.

You don’t realize it, but the same thing an individual does by open sourcing his work in his free time actually makes him more valuable as a hire. He could keep all of his accomplishments from side projects a secret and try to convince businesses to hire him. Or he could give it away openly.

If he does the latter, a business will be able to see his work, judge it’s quality, estimate its worth. You’ll be damn sure that it’s worth more than some guy in his basement with trade secrets that he won’t show to anyone. Nobody wants that guy because they don’t have any clue if he’s really worth what he says he is.

Do the same with business. It’s the same trust relationship with customers and other businesses. If you give away something of value, customers will trust you. They know you’re there for more than just their wallet, you want to make a difference. Companies and consumers will see you and want to be you. They’ll have respect for you.

37signals did this with Ruby on Rails. They built this sweet framework and instead of keeping it as a trade secret, they open sourced it. They didn’t use it as a bullet on their website saying why you should hire them as a consultant, they shared it. Look where it got them. They now speak at conferences, teach classes, all kinds of things. They’re now world renowned, and looked up to by many business owners. Businesses want to be like them. None of this would have happened if they decided to hold Rails tight and be selfish.

Freemium and 30 day free trials are the new hotness for pricing schemes. Why? Because you are willing to stand behind your product and let consumers try before they buy. It’s as simple as that.

People don’t buy what you do, they buy why you do it.

Last week I watched Simon Sinek’s TED talk. His main point is that people want the “why” before the “what”. Take video chat for example. Everyone knows that Skype has done video chat for a while. Nobody cares, but then Apple releases FaceTime and shows deaf people using it to communicate remotely and everyone is impressed. Why? Because people buy why you do it.

It might feel unorthodox, but that’s because it is. People want honesty and openness these days. They have been burned far too many times to place trust in a company that claims they’re good. People want proof. Prove it to them.

You’re either out there to make money for yourself or you’re out there to make the world a better place by doing what you do. Customers will quickly pick up on your real motivations. Be honest and show them that you care.


Start Something That Matters

Posted October 24, 2011 under News

If you’ve never heard of TOMS shoes or read his book, Start Something That Matters, you’ll learn the story of how TOMS shoes got its start. Through a small little idea he put into practice, he was able to change the lives of many, many people.

Looking back, Keryx ended up in a similar (much less successful) state. While Keryx may not have grown to the scale of TOMS Shoes, it’s been very amazing experience. I’ve been in tears reading thank you letters from users who have little to no alternatives using computers in the respective areas of the world.

A project that changes someone’s life gives you many things. First, you’re able to achieve the highest level of happiness knowing that you made a difference. The lives you’ve improved and the people you’ve inspired will never be the same. Who knows what they will achieve given the boost you helped them gain.

Secondly, working on a project that makes a difference gives you motivation and optimism. I was lucky to have had this experience at a young age. My open source experience stemmed from the beginning of high school where I was a part of the PortableApps.com community. Following that, I began to use Linux and the community helped me through every trouble. This inspired me to give back. I wanted a way to help others in my situation.

Having dialup is not fun. I had it at home until one year ago. Downloading software can take weeks on a slow connection like that, so I came up with the idea for Keryx with some help friends in the community. They helped me along and with some ridiculous determination I finished the first version. It was crap, people used it, liked the idea, wanted more. Throughout the past 4 years I’ve maintained Keryx, improving as I can while trying to get through the other hurdles of life.

I strongly encourage everyone to give something away and support it. Write open source software, donate your time at a charity, get involved. Not only will it reinvigorate you, it will have a direct impact on someone else’s life. It builds character, unbelievably strong friendships, and a satisfaction you cannot get from anything else.

If you aren’t living to make the world a better place, what’s the point?


Want Something? Make It Easy To Say Yes

Posted October 20, 2011 under News

You want the short answer? Appeal to a person’s wants.

We’re all human. Everyone has a huge list of wants. Some of them might be more immediate than others. Some of you may want to new customers, some of you want help on homework, or maybe you want help moving with a friend’s help.

Let’s take the business example. Say you run a credit card company and are looking to get new customers. What should you do? You’ve seen it a thousand times. Send “pre-approved” credit cards to potential customers appealing to them with lower interest rates than competitors. But what’s special about this? The credit cards are literally a signature away from being your new customer.

You have to appeal to people’s wants. In this case, you’re appealing to not only to the financial side of a person’s intuition but you’re also subtly telling them that you’re going to make things easy as a customer. You didn’t force them to do hardly anything to sign up, so they get the reassurance that the rest of their experience with you will be the same.

“If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.” – Antoine de Saint-Exupery

Get them excited about helping you and they will come willingly.

If a customer is unsure of your service, offer a free trial. You can allow them to use your product for free, invest time into using it, and when they reach a limit all they’ve got to do is put in their credit card information. The flip side is you can ask for their information up front and give them 30 days to cancel. If you get them to register in the first place, it will be too easy for them to stay on as a fulltime customer.

Want help moving? Buy them dinner or help them with something they’ve been wanting to do. Get them excited, take them to that restaurant they’ve always wanted to go to, or help them finish their model airplane. After you’ve aligned interests, have gloves, hand carts, and lemonade ready for when they show up to help you move.

Students who show that they’ve actually tried working on the problems make it easy for you to help them because what they need is specific. Anytime a student asks “I need help?” and they’re not specific it feels like they’re just asking for you to do the homework for them. This puts the burden on the person helping to figure out what the student needs help on, if they really want to learn it, if they just want hte answer, among other things. When the student needs help with one specific thing it’s easy for you to say okay, I’ll help.

Make it easy for people to give what you want and they will do so. It doesn’t take much sometimes but you’ve got look at it from their eyes.


The Customers You Really Want

Posted October 17, 2011 under News

Love or hate the apple fanboys, they’re the ones who keep coming back every year for the latest hardware revision. What’s that, a new screen? OMGWTFBBQ. Gotta have it. They send your company’s praises constantly to family, friends, and strangers.

These are the people who will be with you through the hard times. These are the customers you want for your business. But how do you get them?

Let me give you an example. I read about CottonBot the other day on Hacker News. Put simply, it’s a side project by Muzzammil Zaveri and Ethan Fast. I wasn’t aware of it, but Startup Schwag had shut down, but the basic premise is that you can subscribe and get cool startup schwag each month.

After checking out their idea, I loved the idea, disliked the price, and was unsure whether I’d like all the shirt designs they would release. I figured I’d send them an email with a couple questions too see if I’d get a response.

Would you look at that. They got back to me in a couple days, had lowered the price, and had noticed me talking about the Stripe tshirt on Twitter and offered to send me one for free!

That sold me right then and there. They cared, and I trusted they would do a good job. I received a hand written thank you and the tshirt in the mail yesterday. I’ll be a fanboy for life.

It didn’t take much, they didn’t even need to send me a tshirt to gain my trust. All they did was listen and show me some respect. It’s more than you get from most businesses, even when you’re talking in person with someone.

Simple customer service can turn an unsure customer into a fanboy with a simple email. They are more likely to be understanding when you have to raise prices. Netflix could have used this tactic when they raised theirs. Without customers you have nothing. Never forget that.


NoMethodError: undefined method `eq’ for nil:NilClass

Posted October 10, 2011 under News

I ran into this error the other day when trying to update a join table without a primary key:

NoMethodError: undefined method `eq' for nil:NilClass

Unsurprisingly, ActiveRecord freaks out when you don’t have a primary key and gives you this error. Adding a primary key back into the fixes the issue. It’s a little unnecessary, however, it’s important to have a primary key so AR knows which record to update.

If you still don’t want to have a primary key, create a composite key across multiple columns. I ran into this issue because I was using acts_as_list and storing the position in the join table. Updating that position is what lead me down this path.


What Would Steve Jobs Do?

Posted October 7, 2011 under News

Every time I hear someone talk about Steve Jobs it is either insurmountable praise or it’s hatred. The man was a legend. At the very worst, he gave you something amazing to complain about. iPhone 4s not what you expected? Complain that it’s not good enough.

Meanwhile in hundreds of other countries, children are running around shoeless. They have more problems with their feet than you can imagine.

I look around today at who is writing in memory of Steve Jobs. Among them? Larry Page, Sergey Brin, and Vic Gundotra from Google have written amazing little pieces about him. Why would they do that if they’re truly arch nemeses like the media makes them out to be?

That’s right, their not. If they are, they are all men here and know when to draw the line. Life is finite and there is more to it than complaining. With Steve, they set out to take the world places we never expected. You should be too. After all, if you’re not doing the absolute best you could be, what’s the point?

John Gruber put it best:

One of Jobs’s many gifts was that he knew what to give a shit about

It’s as simple as that. So next time you start complaining about something, think about what Steve would do. You may not take his approach, but you can be sure he would want everyone trying their hardest. Go do the same.


The Definitive Guide To Brogramming

Posted October 6, 2011 under News


How To Use A Facebook Access Token In Rake Task

Posted September 26, 2011 under News

Recently I was working on a Rake task that was going to cache updates from Facebook locally. Of course, the permission for what I was doing meant that I needed an access_token to access the Graph API. This is definitely beneficial if you’re wanting to create a cron job or rake task that hits the API periodically.

The access_token you get normally only works while you’re logged in. That doesn’t do you much good in a Rake task. Oh yeah, and the docs don’t do much good either. 14 gray hairs later, I had a working solution that works pretty well.

In order to obtain a “permanent” access_token you need to request permission for offline_access along with any of the permissions you need normally. You’ll also need to setup a Facebook app so that you can use the API key and secret to obtain said token.

Once you’ve got that information it’s pretty simple steps to get what you need. I just fired up a local Rails app so that I could retrieve the postbacks from Facebook OAuth.

First you navigate to this url, replacing it with your API key:

https://graph.facebook.com/oauth/authorize?client_id=YOUR_API_KEY_GOES_HERE&redirect_uri=http://localhost:3000/&scope=read_insights,offline_access

That will make a request to localhost:3000 with a code parameter. Then you visit the following url that contains this code and your api key and secrets.

https://graph.facebook.com/oauth/access_token?client_id=YOUR_API_KEY_GOES_HERE&client_secret=YOUR_API_SECRET_KEY&redirect_uri=http://localhost:3000/&code=THE_CODE_WE_JUST_GOT

And voila, you should get back an access_token. Just save this key and use it in your rake tasks! If you know of a better method of doing this let me know, it certainly doesn’t seem optimum, but it does the trick for now.


« Older |