I’ve spent part of my development schedule over the last few months rebuilding the iPhone app for NYC based startup Clean Plates. The Clean Plates iPhone app v2 is now available on the app store so check it out. Clean Plates offers professional restaurant reviews and a series of email newsletters with a healthy eating focus. The app allows users to search nearby or by neighborhood to find restaurants (think Yelp’s app but with more advanced filtering options and only professional reviews).
From a development perspective it was an interesting project in one way in particular: it was a brand new re-write of an existing app. Why re-write instead of extending the existing code base? Read on…
The old app was originally built several years ago and consisted of 475 classes and 79,889 lines of code. If that sounds like a lot of code that’s probably because it is. Because of it’s age there was no use of Storyboards and art assets were fixed in size (no Auto Layout). Combine this with poor performance, frequent crashes and heavy usage of an old un-upgradable version of RestKit and you have a perfect case for a brand new build.
The new app uses Storyboards and Auto Layout so it is compatible with the newer, larger iPhone models. It has been redesigned to be more in line with iOS 7+ style guides and even has more advanced features, including better restaurant filtering and the ability to save favorite restaurants. It is also only has 52 classes and 6,910 lines of code. With the new updates I tried to not to leave any existing users behind so it is still compatible with iOS 7.1+ devices, including hardware compatibility with the iPhone 4 and it’s shorter form factor. Finally, there are no major dependencies on third party libraries such as RestKit so future upgrades should be relatively smooth. The app is not perfect and at least one update will be needed for minor improvements but I consider everything here a big win.
Like most developers I first found out about Stack Overflow by searching Google for an answer to a technical problem. After consistently seeing Stack Overflow show up within the top few spots on Google search results for all sorts of detailed queries I started to use Stack Overflow directly when looking for answers.
Similar to GitHub, Stack Overflow launched in 2008 and is now a critical part of the software development community. Stack Overflow allows users to post questions and get answers in a very streamlined Q&A format. Questions are tagged for their relevant tech, users ask follow up questions or post answers, and then the person who asked the question can accept an official answer if it solves their problem. Questions must adhere to fairly strict standards in order to remain active and users are often prompted to provide more detail if need be.
There have been countless programming Q&A websites since the mid 90s (and many more if you include traditional message boards) but Stack Overflow is by far the best. It starts with a thoughtful design, giving users of different experience levels of power. Various factors go into generating a reputation score for each user, which is shown below each post they make as well as in each user profile. Users are also assigned badges based on completing various types of tasks and reaching specific goals. This is a good example of gamification done right. These design decisions might not seem big but they are the difference between fostering a quality community and having a deserted website. The community ultimately drives the quality of the content and at least for now Stack Overflow has the best community.
GitHub is a website that has been around since 2008 and in the last few years has become a major part of the software development community. GitHub serves as a Git repository (a popular source control application) coupled with a web hosting service. I have been using GitHub to collaborate on private projects for several years now and in that time I have also used lots of GitHub hosted projects to help me build some fun and interesting websites and apps. I thought it was high time that I start giving back to the developer community and so I’ve begun the process of publishing example applications based on some of my work on GitHub.
For my first GitHub repository I have created the iPhone App TextToSpeech. TextToSpeech is a single view application that shows off some of the text to speech features that were first introduced in the iOS 7 SDK. You type in text in a textbox, select a voice type, speed, pitch and pause cutoff type and then play and stop playback of the text translated to voice. The app also registers itself to play speech when the app is running the background with full audio control capability. There are a number of bugs in the official Apple SDKs surrounding text to speech so this project includes several workarounds that may be useful to developers diving into this stuff for the first time. Here’s a quick look at the app:
Get the TextToSpeech project from GitHub