Functional Spec for Mason News iOS App

This is the functional specification for the update to our Mason County News iOS application. The format is based on an excellent template created by Joel Spolsky.

Mason County News is an iOS universal application that runs on an iPad or iPhone.  It is designed to pull the latest Mason County news from the Mason TX County News web site at via the paper’s RSS feed.

The results of the feed will be stored in local core data, the articles and pictures from the feed will also be downloaded and stored locally, with extra html and other data removed for easier viewing when offline. All updates from the site will be running as background threads….
This spec is not, by any stretch of the imagination, complete. All of the wording will need to be revised several times before it is finalized. The graphics and layout of the screens is shown here merely to illustrate the underlying functionality. The actual look and feel will be developed over time with the input of graphics designers and iterative user feedback.

In designing products, it helps to imagine a few real life stories of how actual (stereotypical) people would use them. We’ll look at one scenario…
Scenario 1: Mike.
Mike is a busy executive who was born and grew up in Mason, TX but now lives in Paris France. He still has friends and relatives in Mason and likes to keep up to date on what is going on back in his home town. He reads news on the go on his iPhone or sometimes at home or in his private jet on his iPad. He also likes to share articles via MMM or email with his beautiful French girlfriend so she can practice her English. He likes to read articles offline as well as online.

Non Goals
This version will not support the following features:

  • different languages

Mason News Flowchart
We’ll have time later to go into mind-numbing detail, but for now, let’s look at a quick flowchart of the service so you get the big picture. This flowchart is not complete, but it does give you the right idea for the “storyboard” of using Mason News on your iOS device.


Screen by Screen Specification
Mason New consists of quite a few different screens. Most screens will follow a standard format, with a look and feel to be designed in the future by a graphic designer. This document is more concerned with the functionality and the interaction design, not the exact look and layout.
All screens are created in the XCode interface builder. (The single exception is the Splash Screen, which is created using GIMP).
Each screen in Mason News is known by a canonical name which will always appear, in this document, with an underline, so you know we’re referring to a screen by name, for example, Home Page.

Default Splash
An image of the Mason TX courthouse or other appropriate image – just is displayed during initial load of application, and when first load of rss feed on first start of app.

Home Page
Displayed when app load is complete – looks like below (shows list of all newsitems in the database, sorted by most recent on top) – some items may  not have pictures

Technical Note – 
All updates are in the background – starts empty

Read Article
Picking an article – will load it in the viewer – view will be scrollable down and will contain links as appropriate, also pictures (using  uiwebview)
While reading an article you can share it. share via twitter, facebook, mmm, email, google +, etc

Share Article

About App
Simple page with picture same as splash – then credits and info about Mason and the newspaper

Blogs We Read

Seth Godin
Has written thirteen books that have been translated into more than thirty languages. Every one has been a bestseller. He writes about the post-industrial revolution, the way ideas spread, marketing, quitting, leadership and most of all, changing everything.

A smart bear
Startups + Marketing + Geekery
From someone who’s been there: Jason Cohen, founder of Smart Bear Software.

-lately embroiled in controversery over being acquired by AOL and the exit of founder Michael Arrington – but still a great source for tech and investing news – especially focused on silicon valley startups

No intro needed – tagline says it all ‘news for nerds, stuff that matters’

iOS developer tips
Tips and tricks for iOS developers building iPhone and iPad applications.

Mason County News
Our own backyard.

Bootstrap Austin
A community in the Austin Entrepreneur Scene.

Mark Cuban’s blog

The Bottom Feeder
Jeff Vogel has been an independent game developer since 1994.

4 Hour Work Week
The blog of Tim Ferriss

Using XCode 4 with GitHub

Git is a distributed source control system (like subversion) – still not sure what it is and if you need it? Take a look at this crash course.

GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both commercial plans and free accounts for open source projects.

This is how we set up Xcode 4 and GitHub to work together on the Mac for a new iOS (iPhone or iPad) project. We’re assuming Mac OS Version 10.6.8, Xcode version 4.02 and the latest version of Git.

  1. Register as a new user with GitHub. You can host public open source projects on GitHub for free – if you need private projects you will have to sign up for a paid plan.
  2. Follow GitHub set up steps 1 & 2.
  3. Create your new project in Xcode – check ‘create local git repository for this project’ within the wizard when asked.
  4. Create a README file and add it to the main directory of your Xcode 4 project.
  5. On GitHub create a new repository with the same name as your Xcode project (it doesn’t have to be same name but keeps things simpler).
  6. After creating the new repository (or ‘repo’) on GitHub – follow the ‘Existing Git Repo?’ directions on GitHub.
  7. Now as you make changes in your Xcode source code or project – you can commit them with the standard Xcode command – File -> Source Control -> Commit.
  8. After committing your changes you can push them to your remote repository on GitHub from the command line (from your Xcode project directory) using ‘git push -u origin master’.