Why you should join @path.

First off, as an iOS Developer, I think Path’s UI is the slickest interface implementation I have seen in a LONG time. It’s snappy, quick, and very refreshing. Needless to say, it instantly graduated to my home screen in a prime real estate position. If you’re OCD about your iOS home screen, you know what I’m talking about.

Any time I open Path, I feel as if I’m leaving the clutter of Facebook, Twitter, and G+ behind. While it might be due to the fact that a good portion of my friends are not on it yet (I don’t know what you guys are waiting for), there is something about the UI that keeps everything pretty clean and easy to navigate. They also have a model that only lets you connect with up to 150 people.

“We are inspired by Professor Robin Dunbar from Oxford University, whose research delves deeply into the number of trusted relationships humans can maintain throughout life. We tend to have 5 best friends, 15 good friends, 50 close friends and family, and 150 total friends. At Path, we’re building tools for you to share with the people who matter most in your life.”

A company with a philosophy and a solid product to back it up. I love that.

It’s also very refreshing to see a startup that is able to get their act together. About a year ago, I signed up for Path and my only post was “This site sucks” or something to that extent. And it did. One of the top questions on Get Satisfaction was titled “I don’t know what to do” and it was true. Upon first signing in on the earlier version of Path a year ago, it was not clear to anyone what the purpose of the app was at all. Even the website greeted you to a pretty bare and empty home screen.

All this has changed. Path is now a serious contender in the social web world. I urge you to join Path and keep your eyes on them going forward as it seems like they’ve built a company and product centered deeply on the user experience.

http://path.com

Check out the demo videos below:

Path – Introducing Path 2 from Path on Vimeo.

Path – Share Life from Path on Vimeo.

Planned Parenthood: Siri Sucks. Humans are Better.

http://www.huffingtonpost.com/cecile-richards/what-siris-blind-spot-on_b_1125377.html

“It’s fully accessible on mobile devices, and it won’t mislead you about where to find the health services you need. The humans who manage it make sure of that.”

The above quote is from Cecile Richards, president of Planned Parenthood Action Fund. Perhaps a little passive aggressive? Siri hasn’t mislead anyone and it’s a bit silly to call Siri’s lack of information on abortion clinics a “programming glitch”. It’s not a glitch. Sometimes Siri’s vocabulary and knowledge just doesn’t cover the question being asked and while Apple has touted Siri as your personal assistant it’s obvious to most people that Siri can’t do everything. If you depend on Siri to help you navigate complicated life issues, then there is something wrong with you. Siri is a novelty.

There are plenty of things Siri doesn’t know the answer to and some things it just likes to have fun with. Skynet will be here before we know it and will be begging again for the days when Siri didn’t even know where the nearest abortion clinic was located.

Working on iOS projects with multiple developers

The first thing I noticed once my company had more members than just me was the need to track and version our code base. To get you started, here are some things you should consider.

Version control
At both of my startups, we use git for version control. It works really well and the branch/merging/tagging system is awesome. If you’re unfamiliar with git, check out Git Immersion. One thing I should mention is that if you are working on an iOS project and using git, you will want to make sure you create a .gitignore file otherwise you’ll run into some issues when team members open your shared project. Here are some instructions on configuring your .gitignore for xcode.

Code Storage
In a distributed code environment, each member of your team has the ability to checkout  and commit new code to the project. In order to do so, you need to have the code base hosted in a central location. We use Dropbox has our repository. It’s free (up to 2GB) and it works really well. For general instructions on how to set that up, check out this stackoverflow post: git+dropbox?. You can also sign up for paid accounts on Beanstalk or Github to keep private repos at their sites. These paid services also have additional services that are not available by going the Dropbox route.

Email notifications
I can not stress enough how important it is to have email notifications on code commits. I know what you’re thinking, “I’m gonna get an email every time someone commits code?!? That’s annoying!” You’ll be surprised how beneficial this is. Not only is it useful for tracking down bugs that may have been *inadvertently* introduced but if you assign the email receiver to a group email,  everyone on your team can keep a pulse on how the project as a whole is progressing. You can always create an email filter to manage these message. Here is a neat little plugin that will allow you to send HTML style emails on every commit- https://github.com/bitboxer/git-commit-notifier

Tools
Before committing or merging any code I usually fire up gitX to review my changes. It’s also a good way to see a graphical representation of your git commit, branches, and other related info.

Disclaimer:
I know some of you may be thinking “but XCode has SVN support!”. Trust me, you will learn to love life a little more if you try out git. If SVN is working for you in XCode, great! This article is not for you.

Simulating slow connection speeds in iOS App

It’s been a while since I’ve had the chance to share some tips but here’s something I came up with while testing an app I’m currently working on. The app downloads pretty big files at times and it’s pretty useful in testing to simulate slow connection speeds. Unfortunately because of some of the features in the app, it cannot be tested in the simulator so using something like SpeedLimit is not really an option (although this does work really well if you’re testing in the simulator). If you’re working on a fiber optic internet connection all the time you may forget that more often than not, your end user will not be on a really fast connection.

So what can you do to simulate a slower internet speed? It’s actually pretty easy. You will need a computer with with an ethernet connection and an airport card. You will share your ethernet connection over airport with your iOS device. Then you will throttle your connection speed on your laptop and boom … you’ll be crawling at 56kbps before you know it. Here’s the step by step.

1) Connect your mac using and ethernet cable into your router
2) On your mac, open System Preferences and click on Sharing.
3) Set “Share your connection from:” to Ethernet from the dropdown
4) Set “To computers using” to “Airport”
5) You’ll want to set your password and what not in the airport options. It’s pretty straightforward.
6) On your iOS device connect to the wireless network you’ve just created on your mac
7) Open terminal on your mac and there are two things to type here:

$ sudo ipfw pipe 1 config bw 384KByte/s
$ sudo ipfw add 1 pipe 1 src-port 80
In the command above will throttle your connection down to 384KByte/s or close to 3G speed. This is the number you will replace to simulate different connection speeds.
8) Make sure your delete that pipe when you’re done otherwise you’ll be surfing at snail speed.
$ sudo ipfw delete 1
For reference here are some numbers to play with:
1544kbps (T1)
768kbps (DSL)
384kbps (3G)
64kps (Edge)

I’m sure there are other ways to do this, but this method worked well for me. Happy Testing :)