This video is the first thing I show when I give talks on Foursquare these days. I’m still surprised by how many people doubt the power of check-in data or dismiss Foursquare as just “mayors and badges”.
When I can show these people NYC and Tokyo lighting up and explain that every city around the world pulses like this every minute of every day, well, that’s when they usually start to get it. This is the part of the job that’s fun :)
40,000 API developers
To mangle an old line from El-P, “getting those check-ins fist over fist/FUCK WHAT YOU HEARD”
I have found that one of the hardest things to do is to restart a project you have not touched in a few months. I sit down, open my laptop and look at the monstrosity I created and I try and figure out where the hell I left off. What were all my amazing ideas and what issue was I trying to solve? It is like when you leave the house and forgot to put the dog away and he decided to have a party while you were gone.
A few months back I was in a fantastic groove; building two #nodejs applications with a buddy of mine. We got about 80% done with the MVP of our main application and I thought of a cool new idea from somthing I recognized while building the app… I call that Developer ADD.
I shifted gears, thinking in depth about a new project instead of finishing my first one. Could I have continued and finished the first one without needing the second? Yes.
So, where am I at now with these two projects? Well, I am in the middle of buying a house and about to move. My buddy just got engaged and is starting to plan his wedding with his fiancé. We are both working harder than ever at our day jobs and all of our current work is somewhere in GIT land. That didn’t really tell you much about the projects now did it?
We are about three months removed from doing any programming on these two apps. That is three months of not checking in code, not documenting issues or features and not learning the things we were learning while we were working every day on these two apps. What happened that made us just stop? We were doing so well, focusing on an MVP, learning cool new ways of doing things and having a lot of fun.
Personally, I got burnt out. When our projects got closer to the end, we started to run into bigger, harder issues that would take hours to figure out and develop solutions for. We both had situations where we needed to rewrite large chunks of the app and I think it was just too easy to choose watching TV and eating Bon Bons over using my brain and powering through these things.
I even stopped using Twitter and blogging about nodejs. I stopped going to the @DetNode meetups. I basically avoided coding at home after long days at work.
What was I thinking, right?
Actually, this is probably my third or fourth wave of experiencing something like this, where I was in an awesome flow of developing applications at home for fun and learning a heck of a lot and then just stopped. I do not think it is a bad thing at all and I think it is a natural process that we sometimes have to go through to reset our minds and find our mojo again but, doing it the way I did, in the middle of developing a project really kills momentum and makes it very hard to get started again.
What did I learn? My dad always told me, “You have to know how to finish.” We would shoot pool or he would come watch me play soccer growing up and when it was clutch time and I would miss the 8 Ball or a wide open shot in soccer, afterwards, my dad would give me that line, “You have to know how to finish.” That is where I need to leave projects, in a finished state.
That doesn’t just apply to sports and code, that goes for life projects too. See it through all the way to the end because 80% is not enough.
How many old Memes can I fit in one post?
How do I make sure I finish something? Lists and goals. I write down what I want to achieve and I break them down into small chunks so that they are easy to digest and accomplishable within a short time scale. They help me create momentum and it gives me a good sense of accomplishment when I look at all the things I got done.
To turn the tide and start gaining some momentum back towards developing these apps, one line item for me was writing about it all. Start sharing again and work towards my goals one small bit at a time.
And, focus on finishing what I started… no matter what it is.
Lately, I have been doing two things… interviewing people and house shopping. I have determined that the emotions you go through are very similar for both events, hence the use of double equals (my programmer friends get it).
When interviewing a person, I am very optimistic. I go into each interview thinking this is the person for our team and I am excited to see what they have to offer. During the interview, I have internal discussions with myself convincing me to look past flaws or characteristics that are red flags and would be detrimental to team chemistry and overall productivity.
Then, about half way through the
interview, my gut and my instincts take over. They scream at me to get my attention so they can tell me, “HEY, CALVIN! THIS IS NOT THE PERSON YOU ARE LOOKIN FOR.” And like a Jedi mind trick, I listen to that inner voice and accept the facts for what they are and move on.
House shopping has filled me with this same exact struggle. I go into every house thinking this could be the one and I try to envision myself and my wife living there, having family over and entertaining. In doing so, I tend to look past the fact the roof is falling off and there is a natural pond in the basement. No, I am not that blind to look past such structural problems, but you get the point.
With both events, interviewing and house shopping, I am learning to step back and look at things as objectively as possible. Write down the important things, the red flags and the selling points.
For interviewing, listening to your team is extremely important. Get their feedback and gut reactions. Ask your team intriguing questions and speak honestly so your team can give you objective information towards making a decision.
The same goes for house shopping; get someone else’s opinion. For myself, I bring an army of people house shopping with me. My mom, my step dad, my sister, her husband, my realtor, myself and my wife all go look at houses together.
Why do I bring all these people? Because we are insane. No, I bring all these people because we have a family addiction to looking at houses and we all have something to bring to the table. My wife and I listen to what everyone has to say and we ask our army a lot of questions so we can look at all the facts and make a decision.
More often than naught, both events have taught me that being patient and sleeping on it is the right thing to do. If you feel the same the next day, maybe you are on to something. Listening to your gut and instincts is very important because they are usually right. Being as objective as possible helps weed out obvious NO’s. Getting other peoples opinions matter, but ultimately, the decision is yours (and your wife’s in the case of house shopping).
Last but not least, do not get down. Stay positive and keep that optimistic attitude because when you find that candidate or that house, you will know it. Just, try not to talk yourself into finding flaws that might not be there.
Yesterday I tried to deploy the first part of an application on nodejitsu using their command line tool jitsu and ran into some problems. I thought I would share what my issues were, what the fix was and my experience with the nodejitsu crew.
I have been working locally and went to deploy to nodejitsu and it would not deploy. I kept getting a 500 error from the deploy which did not give me a lot of information. Everything worked great locally, but as soon as I deployed, it would blow up. I narrowed it down to something related to the bcrypt module.
IRC Channel #nodejitsu
I hopped on the nodejitsu IRC channel where I posed my issue and was replied to immediately. They asked me to upload a gist gist of the error I was seeing in the jitsu output so they could look at my application and dig into the issue from their end. After some back and forth with some guessing and checking, the team on the nodejitsu IRC channel was awesome and helped me fix my problem very quickly. I have been on their IRC channel a few times regarding my Node.js applications and every time they rock.
If you are having a similar issue with bcrypt and nodejitsu, follow these steps.
- Update jitsu: sudo npm update jitsu -g
- Update bcrypt: sudo npm update bcrypt -g
- Make sure your package.json points to the newest version of bcrypt.
- Make sure your package.json uses Node.js version 0.8.x instead of 0.6.x.
The last point there, updating the version of node in the package.json file was the fix which worked for me. Make sure it points to 0.8.x instead of the older version of node.
Moral of the Story:
I really like nodejitsu and using their IRC channel for help. Also, make sure all the versions of all the things you are using are up to date and you are pointing at them. If something seems like it should be working and it is something dumb, it probably is.
I just finished presenting about #Nodejs at #1devday and it was so much fun. That means, I can finally share the app I built for it. It is called Instatagged and it displays images in real time from the Instagram API based on whatever tag you wish to look at.
It’s on github! Check it out!
Checking my room out at #1devday (at Cobo Center)
I just released my really simple external link setter on GitHub. All it does is loop over all of the anchors passed in, checks the host of the element against the page you are on and if there is not a match, adds attribute target=”_blank” to it. It isn’t for everyone but it is useful for adding this functionality quickly to a site.
I just published my Client Side Tumblr RSS Parser to github. It is designed for people who do not have a backend that can connect to Tumblr on the server side but still want to display the content of an RSS feed from a tumblr site. You can see it in action on my personal website, calvinbushor.com.
Go ahead and clone the repo, see what you think and submit a pull request to fix my bugs.
I deployed the new CalvinBushor.com on nodejitsu using their command line tool jitsu which, by the way, is awesome. It is easy to set up and deploying is a synch, just type “jitsu deploy” from the root directory of your app once you have jitsu installed and linked to your account.
I also got to experiment with nodejitsu’s custom domain implementation. I found a great post explaining how to obtain nodejitsu’s current IPs so that you can point your A-Record to their servers. All of the configuration for defining the custom domain go into your Package.json file. It could not be easier.
CalvinBushor.com is officially part of Devtroit, an up and coming developer association in Detroit founded by @yodasw16. If you build websites or are affiliated with web technology in Detroit, grab a badge from their site and submit your name to join the group and support technology in the D.
I have been picked to be a speaker at 1DevDay in November. My presentation is titled “Oh NODE you didn’t” and I will be going over some of the things that make NodeJS awesome. You can see a description of my talk on the sessions page.
There will be some great talks at this conference from a broad spectrum of speakers and topics. Heck, there will be a guy there that was a part of CERN laboratory speaking. I hope some of you can make it out and enjoy learning about some awesome technology in the D!