Archive for the ‘Software Reviews’ Category

I was reviewing AppCoda’s Beginning iOS 10 Programming with Swift when the new versions of XCode, Swift, and iOS were released. The publisher also updated the book, so I decided to switch to the new material.

Instead of discarding the initial review and starting over again from scratch, I decided to publish what I’ve done already and will delete this older content once I reach the same point in the new book (Ch 14). I will leave out the screenshots for this older material as well, but will have plenty in the new material.

I intend to update this review once a week, even though it is the holiday season right now.  Please follow this post so you can see when it is updated.  Now on to the review.

Title: Beginning iOS 10 Programming with SwiftBeginiOS10Prgm
Author: Simon Ng
Published: AppCoda publisher
Price: NO LONGER AVAILABLE
Length: 612 pgs (PDF) (30 chapters)
Website: www.appcoda.com

By Mike Hubbartt, © Copyright 2017, All Rights Reserved.

This book is for Swift 3, Xcode 8 and iOS 10, and the intended audience is people without programming experience as well as people wanting to learn the Swift programming language.

I’ve been a programmer a long time, and have dabbled in mobile development awhile but have not been happy with the iOS tutorials I found until now. I came across ‘Beginning iOS Programming with Swift’ after searching for iOS tutorials on Yahoo, and started following the online book. AppCoda provides part of the course at no charge, which is a nice approach and similar to other publishers providing free chapters to interest prospective buyers. After going through the first five chapters, I had created two new iOS apps fairly easily, so I contacted AppCoda and got the book so I could complete the course.

Before we get started, I want to point out that this book used Xcode 8.0. If you upgrade to Xcode 9 and iOS 11, so if you already upgraded to both, you may want to contact the publisher to see when the update to this book will be done.

During development, you need to select a target version of iOS – my mini tablet just has 9.3.5, but my old iPhone 5 has 10.3.3, so I used that as the default target iOS initially. Now lets get started with the review.

IMPORTANT NOTE!! My review was done using the iBook version of the book, not the PDF, so I use those page numbers in my references. Please be aware there are a lot pages in the iBook version of documentation than in the PDF version, so the page numbers do not match up.

THE BOOK
The first three sections are: Preface, Ch 1:Getting Started with Xcode 8 Development, and Ch 2:Swift Playgrounds – all important if you’ve never developed, or new to development with a Mac. I’ve done both, but I still read over the material and did find it useful and accurate for setting up a development environment for Macs. Being anxious to create an actual iOS app, I pressed on to chapter 3 so I could see how easy it is to build an app.

IMPORTANT NOTE: The list in the table of contents at the start of the iBook lists the sections, but it shows Preface as the first. The actual chapters are not part of the items in the TOC, which is a small item I would suggest the author change, as well as update any chapter titles that might have been updated since initial publication.

Chapter 3: Build Your First App

This chapter has you build a simple Hello World app – the task most books have when teaching a programming language. Simon has you build an app with a single button, plus the code needed to tie the button to functionality.

The author gives you the specific steps you need to follow to create this app. It really is easy, and all I needed to do was follow the steps to build a Hello World app:

  1. Create a newXcode project.
  2. Select a template for your new project (Single View Application).
  3. Choose options for your new project (the book has the options plus what you enter for them – nice).
  4. Save the project (pick a location on your computer – I decided to use different ones for each book project).
  5. After selecting Next and Create, Xcode opened my new project (See below). The author points out the importance of learning a development environment, and I followed his advice and explored the Xcode Workspace. The author explains how to use the Xcode Simulator to run Xcode projects, and uses large and clear graphics to show what to select to see a project execute. I have an iPhone 5s, so I took the opportunity to change the Xcode Simulator to use that instead of the default iPhone 6. You could use newer iPhones or tablets too.
  6. To build the button for the Hello World project, you need to switch to the Interface Builder, where buttons and other interface items (like lists, other controls, etc are available to the developer).  I selected the Button and moved it to the middle of the View Controller area of the screen.  I positioned the button in the middle of the screen (easy the the Xcode alignment guideline, as shown in Fig 6), then renamed the button (per the book). The author says you can already test the app at this point so I did. It did take a few minutes for the Simulator to get started and render the iPhone with the new app, but it did – be patient. At this point, you have created a simple iOS app with a simple button that does nothing, but you still have created a app.NOTE: The author makes a great point about iOS development. The code and UI for apps are separate – this means you spend less time learning how to create a UI and more time on the layout and logic of app design. Sweet.
  7. To add code to the the app, which is executed when the button is selected, you need to switch to the ViewController.swift file.  I added the code is the first IBAction function (the other two functions were added later to extend my learning). As you see, Swift coding isn’t difficult. The book explains what each part of the simple code does, not too deep to slow you down at this point, but enough to understand what is happening.
  8. Now you need to connect the code you wrote in step 7, to the UI you created in step 6. This is easy. Just switch back to the Interface Builder, select the button and drag it to the View Controller under the View Controller Scene at the left of the UI.Now you can test how the code works with the button you added. This is better than the simple test you did in step 6, as you get to see your app do something. Run it with the simulator and there you are. Your first iOS works. Sweet.
  9. I wanted to learn more, so I did the end-of-chapter exercise and added a few extra buttons plus added two new functions to display different messages than the first button. It was intuitive and easy, and something I suggest you do too. The only way you get better as a developer is to learn all the ranges you have at your disposal, so play time in this case is actually very productive. Now play.NOTE: As this Hello World is very basic, I only used the Simulator to test it. I will deploy more advanced apps developed later in this book, using my iPhone and iPad Mini. The iPad mini will require an older version of iOS, so I will describe how easy that is to set before creating and deploying my apps.

Chapter 4: Hello World App Explained

This chapter goes into detail into what you just built. You must read this, as it clarifies the other options you have. I kept my Hello World app open while reading the chapter, and checked out the options as I followed along in the book.

The material in this section was just as useful as the earlier chapters, and keeping it separate from the first app you develop means you don’t get bogged down in language details while creating your first app, yet you still get the technical information needed to back up the process of creating an iOS app. I like this approach – very easy to make progress, while still learning detailed processes.

Chapter 5: Introduction to Auto Layout

Auto layout is where the UI elements can be arranged and can handle the different sized screens available to iOS apps. iPhone 4s – 8s use different screen sizes, as do tablets, so this is important unless you only want to develop apps for your own use.

I’m not going to spend a lot of time in this chapter, since it is no longer the way you develop apps for different devices. The author includes it so you see how it was done, but the next chapter gets into stack views, which is the newer method for developing multi-device apps.

To use auto layout, you set constraints to the sides and top or bottom of the screen, which help retain formatting when a device is turned on the side or when devices with different-size screens run your app. It takes a bit of work, but it works. Now on to the next chapter.

Chapter 6: Designing UI Using Stack Views

In iOS9, Apple introduced Stack Views to layout UIs. What is a Stack View? I asked that myself. As the author says:

“The stack view provides a streamlined interface for laying out a collection of views in either a column or row….
You can embed multiple UI objects into one by using stack views…
The stack view manages the layout of its subviews and automatically applies layout constrains for you. That means, the subviews are ready to adapt to different screen sizes. Furthermore, you can embed a stack view in another stack view to build more complex user interfaces.”
– Simon Ng, Beginning iOS Programming with Swift, Page 87

NOTE: This doesn’t eliminate the need for auto layout. You still need to define layout constraints for stack views. This is the chapter where we learn how to develop more advanced iOS apps.

Creating a New App

  1. You need to create a new project for this chapter. The author suggests StackViews, which is the same name I used for the directory to hold the new project. He provides the answers you need to create the project, so no guessing at this point.
  2. You will need some images (3 images, each in 3 different sizes), which he provides as a download. Xcode groups images in an asset catalogue (called Assets.xcassets in Xcode).
  3. Download the images and drag them to in the AppIcon list as described in the book. Once you need to access each image, you don’t need to specify size which is used – iOS does that for you.
  4. Open Main.storyboard for this project to add two labels to the new app. Drag a Vertical Stack View object (from the Object Library at the bottom left of Xcode) to the storyboard view controller.
  5. Now drag a label object and drop it on top of the stack view. Rename the label per the book, then resize it and change the font color as well.
  6. Drag a 2nd label object and drop it on the same stack view. Rename the second label, per the book. By default, labels left-justify, so change the stack view property from Fill to Center to center align both labels.
  7. Now add 3 images to the view. You place the 3 images side-by-side, then you will use another stack view to group them together. Add another stack view to the view and add the images to that stack view.
  8. Now you combine both stack views so all of the elements are positioned as a unit.
  9. Add constraints. This is where the free online material differed from the purchased book. The book says:

    “Now click the Pin button in the layout button. Set the space constraints of the top, left and right side to 70, 0 and 0 respectively. When the constraint is enabled, it is indicated by a solid red bar. Then click the “Add 3 Constraints” button to add the constraints.”- Simon Ng, Beginning iOS Programming with Swift, Page 100

    I found this unclear, so I looked around and noticed the button looking like a cutout of a tie fighter in the bottom right part of Xcode, so I selected it and was able to set the constraints as directed.

  10. The book then says that there will be problems positioning the stack view. I got (very) lucky and had no issues. Sweet.
  11. Now preview the app on other devices. It looked good, except some issues truncating the top label – easily fixed. I again got lucky and had no issue with the aspect ratios of each image (they did not appear stretched), which was due to my playing around with the app before receiving the book from the publisher. Compared to the first app, I was impressed.Per the book, I fixed the title truncation (very fast easy fix) and tested it and it worked fine.
  12. Add another 2 labels to the view, then add both to a stack view. Following the book, very simple. This app is starting to look like a real app. I adjusted position (relative to the bottom of the device) and size and spacing to keep the buttons looking good.
  13. Now it was time to learn about a new (since iOS 8) UI design concept: Adaptive Layout, which lets apps adapt the UI to particular devices and device orientation. You need Size Classes to achieve adaptive layout.

    “A size class identifies a relative amount of display space for both vertical (height) and horizontal (width) dimensions. There are two types of size classes: regular and compact. A regular size class denotes a large amount of screen space, while a compact size class denotes a smaller amount of screen space.”- Simon Ng, Beginning iOS Programming with Swift, Page 111

    “By describing each display dimension using a size class, this will result in four abstract devices: Regular width-Regular Height, Regular width-Compact Height, Compact width-Regular Height and Compact width-Compact Heigth.”- Simon Ng, Beginning iOS Programming with Swift, Page 112

  14. Size Classes made it easy to position UI elements, or hide them on certain devices. Sweet.

Chapter 7: Introduction to Prototyping

“A prototype is an early model of a product used for testing a concept or visualizing an idea.”
– Simon Ng, Beginning iOS Programming with Swift, Page 119

I’ve created many prototypes before and during projects over my career as a developer, as they help the customer see what you intend to deliver. Unfortunately, while prototypes can prevent scope creep with some customers. they encourage scope creep with other customers.

Scope creep is where projects change as work progresses, as customers decide to ask for more features or functionality. Scope creep is an enemy of any Project Manager, as it destroys estimated project timelines. You can’t prevent everyone from asking for more, but you try to get them to accept adding those after the initial project rollout or update.

With traditional enterprise-class software projects, writing a prototype on paper or in PowerPoint or on a whiteboard is usually faster than creating a software prototype. You draw the basic UI elements of each page and show the flow between design elements/pages. When you need to add functionality to an existing site or system, you just need to prototype the new functionality to demonstrate it works.

This chapter of the book has a list of good tools to help prototype iOS apps, including: Marvel, Photo.io, Flinto, Principle, InvisionApp, POP, Sketch, Adobe Experience Design and Keynote. Of these, only the last four are described – no worries as well all know how to Google. For this review, the prototype tool I used was POP (Prototyping On Paper), which lets you create working prototype without writing any code – a real timesaver when preparing a quote for a client.

I downloaded from the iTunes store and installed on my iPhone, then grabbed the app prototype same the author provided (1.6M file available as a link in the book). I added the downloaded images from the author to my iPhone, opened POP, created a new project, then linked the pages together. Pressing the Play button allowed me to navigate through the prototype screens, which would look very good and useful to any client. Then, you just need to make the app in Xcode, test, and demo the working product to a customer. Nice.

I like this included. Prototyping isn’t included as part of Xcode (wish it was, Apple) but the tools mentioned in chapter 7 are worth time learning. I’d suggest initially POP and Adobe Experience Design, but the others are very good too.

Chapter 8:Creating a Simple Table Based App

“First of all, what exactly is a table view in an iPhone app? A table view is one of the most common UI elements in iOS apps. Most apps (except games), in some ways, make use of table view to display content. The best example is the built-in Phone app. Your contacts are displayed in a table view.”
– Simon Ng, Beginning iOS Programming with Swift, Page 130

This is where you create your third iOS app. After creating a simple table project in Xcode, I added a single table view to the view, then made the table view take up the entire view. Next, I set the Prototype Cells to 1. Why?

“Prototype cells allow you to easily design the layout of your table view cell. You can think of it as a cell template that you can reuse in all of the table cells.”
– Simon Ng, Beginning iOS Programming with Swift, Page 133

The app created in this chapter uses the UIKit framework, which provides classes to construct and manage the UI app interface. All objects in the Xcode Interface Builder Object Library are in UIKit.

The author mentions in this chapter he is not discussing classes and methods yet – OOP elements that some find confusing – but he does cover them later. A good idea when the audience is new to development.

Following the instructions, I created a simple table, using a list instead of a database, similar to the iOS Contacts app. Not terribly difficult, however I forgot to set the prototype cell identifier to Cell, so I had an error to track down – an email to AppCoda and I had the answer how to fix the issue, so I was back at it again. Good example, but now I am looking forward to using a database or data source that isn’t a fixed array list and I want to see how to add individual images to each item in the list – the second item is covered in chapter 9.

Chapter 9: Customize Table Views Using Prototype Cell

This is where we built a real app called FoodPin. After closing the SimpleTable app, I created a new project, similar to the project in chapter 8 but using UITableViewController and using individual images for each restaurant displayed in the app. It was easy using Swift, which is well worth learning for novices as well as experienced developers.

This app has custom labels for each cell, which I created by dragging 3 Label objects to the cell, grouping them with a stack view, then grouping the new stack view and the cell image in another stack view. Simple. Then, Simon points out an important fact about iOS development:

“By connecting the source code with the UI objects, we can change the values of UI objects dynamically.

This is a very important concept in iOS programming. Your UI in storyboard and code are separated. You create the UI in Interface Builder, and you write your code in Swift. If you want to change the value or properties of a UI element (e.g. label), you have to establish a connection between them so that an object in your code can obtain a reference to an object defined in a storyboard. In Swift, you use @IBOutlet keyword to indicate a property of a class, that can be exposed to Interface Builder.”
– Simon Ng, Beginning iOS Programming with Swift, Page 391

We created a new class for the project, where we defined variables for all four items in each cell (Name, Location, Type and ThumbnailImage) using @IBOutlet.

“@IBOutlet is used to indicate a property that can be connected with a view object in a storyboard.”
– Simon Ng, Beginning iOS Programming with Swift, Page 393

You use these outlets to change font characteristics or events to be triggered when a button is selected. Handy and something you must understand. You also need to set the prototype cell to use the custom class you create, which is also simple. The chapter also explains how to set the images to appear circular instead of square – a few extra steps, but the presentation is worth it. We also set the restaurant name, location and type values to be dynamically displayed, which was fairly easy too.

Chapter 10: Interacting with Table Views and Using UIAlertController

In this chapter, we select an item in the view, just like selecting a contact name in the Contacts app. We also are exposed to UIAlertController, which is commonly used to display iOS alerts. In this chapter, we improve the FoodPin app by using individual images and rounding them to improve the look of our app. We also add three labels for each restaurant (name, location and type) to each row in the table, plus add three arrays to provide custom information for each restaurant.

No real problems following along with the directions in this section. I did copy and paste some of the code to save time, but I did read the information on everything new we are exposed to, and suggest you do so too. After getting the custom information to show in each line, we add a button to show a checkmark beside a restaurant – to show when a restaurant is selected. Then we addressed a known bug on reusing cells, plus add a line of code to deselect a cell once an option is chosen from the new popup list.

Good chapter. A LOT more Swift coding was covered. Not too much, but more than earlier chapters. Now on to chapter 11.

Chapter 11: Table Row Deletion, Custom Action Buttons, Social Sharing and MVC

According to Wiki (https://en.wikipedia.org/wiki/Model–view–controller):
Model–view–controller (MVC) is a software architectural pattern for implementing user interfaces on computers. It divides a given application into three interconnected parts. This is done to separate internal representations of information from the ways information is presented to, and accepted from, the user. The MVC design pattern decouples these major components allowing for efficient code reuse and parallel development.

I’ve used this architectural pattern doing web development, but was unaware this was also popular for desktop GUI development. Sweet. I would suggest you read more about this pattern if you even think you may do web development some day.

“Separation of Concerns (SoC). The concept is pretty simple. Here, the Concerns are different aspects of software functionality. This concept encourages developers to break a complicated feature or program into several areas of concern so that each area has its own responsibility. The delegate pattern, that we explained in the earlier chapters, is one of the examples of SoC.

The model-view-controller (MVC) concept is another example of SoC. The core idea behind MVC is to separate a user interface into three areas (or groups of objects) that each area is responsible for a particular functionality. As the name suggests, MVC breaks a user interface into three parts: Model, view and controller”
– Simon Ng, Beginning iOS Programming with Swift, Page 446

To illustrate MVC using an iOS app, consider the SimpelTable app developed in chapter 8. The restaurantNames object is an array and is the model, the UITableView object is the view, and the UITableViewController is the controller.

On to deleting rows in a view. In iOS apps, data in a view is usually deleted by swiping across the row in the view. A good example: the iOS Mail app. The Swift code needed to delete a row and refresh the view is simple:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath:IndexPath) {
// enables deleting a row in a table view
// Now u can swipe a row and a delete button is visible, but not enabled

// this code allows deletion of data from the 4 arrays:
if editingStyle == .delete {
// Delete the row from the data source
restaurantNames.remove(at: indexPath.row)
restaurantLocations.remove(at: indexPath.row)
restaurantTypes.remove(at: indexPath.row)
restaurantIsVisited.remove(at: indexPath.row)
restaurantImages.remove(at: indexPath.row)
}

print(“Total item: \(restaurantNames.count)”) // for debugging purposes
for name in restaurantNames {
print(name)
}
tableView.reloadData() // refreshes the view to show revised data
}

Something I like about this example: being able to access Twitter and other social media. I added the UIActivityViewController code to enable tweeting from the FoodPin app, including embedded images, logged into Twitter on the Simulator and tweeted from the simulation of FoodPin – it worked. Sweet. Talk about a great real world example! One suggestion I’d make regarding this functionality, is mention it is a test in your tweet plus include @AppCodaMobile in the tweet so the book publisher is notified you are testing this functionality of the book.

Chapter 12: Introduction to Navigation Controller and Segue

Navigation controllers let you drill down into content. Using our FoodPin app as an example, selecting a restaurant in the view, a navigator would drill down into pertinent information on that restaurant.

“Generally, you combine a navigation controller with a stack of table view controllers to build an elegant interface for your apps.”
– Simon Ng, Beginning iOS Programming with Swift, Page 484

Yes, it’s finally time to have more than a single view in our FoodPin app. Yay, lol.

“add more view controllers in the storyboard, link them up, and define the transitions between them. All these can be done without a line of code. When working with storyboards, scene and segues are two of the terms you have to know. In a storyboard, a scene usually refers to the on-screen content (e.g. a view controller). Segues sit between two scenes and represent the transition from one scene to another.
– Simon Ng, Beginning iOS Programming with Swift, Page 485

To make storyboards easier to use, large ones can be broken up and linked using storyboard references.

I followed the directions in this chapter, using the Interface Builder to add a navigation interface to my FoodPin app. It was easy and took no coding to get it to work. After adding the navigator, I used the Interface Builder to add another view controller to display restaurant details. I then added a segue to connect the first controller to the detail controller, also using Interface Builder. Now I had two view controllers and a navigation controller, and now I needed to share the first images with the details view controller, so it was time to add another class.

“A segue manages the transition between view controllers, and contains the view controllers involved in the transition.”
– Simon Ng, Beginning iOS Programming with Swift, Page 674

This is the Swift code from the book for the segue:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == “showRestaurantDetail” {
if let indexPath = tableView.indexPathForSelectedRow {
let destinationController = segue.destination as! RestaurantDetailViewController
destinationController.restaurantImage = restaurantImages[indexPath.row]
}
}
}

CH 13: Introduction to Object Oriented Programming

Swift and Objective-C are OOP languages, where you create and use objects. As the author points out, some of the iOS SDK objects we’ve already used up to this point include the UIViewController, UIButton, UINavigatorController and UITableView. Essentially, one uses OOP to develop complex applications using small building blocks, where each has a specific purpose. In OOP, you create a class and use that class as a blueprint to create objects (also called instances) with methods (to provide functionality) and properties.

In the FoodPin app, we have five arrays holding individual types of restaurant data. In this chapter, we modify that.  This is the Swift code used to make that new class:

class Restaurant {
var name = “”
var type = “”
var location = “”
var image = “”
var isVisited = false

init(name: String, type: String, location: String, image: String, isVisited: Bool) {
self.name = name
self.type = type
self.location = location
self.image = image”
self.isVisited = isVisited
}
}

The five properties for the new class are name, type, location, image, and isVisited. The 1st four properties are declared as blank strings (“”), while the 5th is boolean. init() defines the object initializer, which sets the initial property values for each new object created with this restaurant class. The restaurant data is now grouped by restaurant, instead of by number – data in the real world is kept in database tabes, grouped by a key value that is called instead of a relative position in an array. The code for this is:

var restaurants:[Restaurant] = [
Restaurant(name: “Cafe Deadend”, type: “Coffee & Tea Shop”, location: “Hong Kong”, image: “cafedeadend.jpg”, isVisited: false),
Restaurant(name: “Homei”, type: “Cafe”, location: “Hong Kong”, image: “homei.jpg”, isVisited: false),
Restaurant(name: “Teakha”, type: “Tea House”, location: “Hong Kong”, image: “teakha.jpg”, isVisited: false),
Restaurant(name: “Cafe loisl”, type: “Austrian / Causual Drink”, location: “Hong Kong”, image: “cafeloisl.jpg”, isVisited: false),
Restaurant(name: “Petite Oyster”, type: “French”, location: “Hong Kong”, image: “petiteoyster.jpg”, isVisited: false),
Restaurant(name: “For Kee Restaurant”, type: “Bakery”, location: “Hong Kong”, image: “forkeerestaurant.jpg”, isVisited: false),
Restaurant(name: “Po’s Atelier”, type: “Bakery”, location: “Hong Kong”, image: “posatelier.jpg”, isVisited: false),
Restaurant(name: “Bourke Street Backery”, type: “Chocolate”, location: “Sydney”, image: “bourkestreetbakery.jpg”, isVisited: false),
Restaurant(name: “Haigh’s Chocolate”, type: “Cafe”, location: “Sydney”, image: “haighschocolate.jpg”, isVisited: false),
Restaurant(name: “Palomino Espresso”, type: “American / Seafood”, location: “Sydney”, image: “palominoespresso.jpg”, isVisited: false),
Restaurant(name: “Upstate”, type: “American”, location: “New York”, image: “upstate.jpg”, isVisited: false),
Restaurant(name: “Traif”, type: “American”, location: “New York”, image: “traif.jpg”, isVisited: false),
Restaurant(name: “Graham Avenue Meats”, type: “Breakfast & Brunch”, location: “New York”, image: “grahamavenuemeats.jpg”, isVisited: false),
Restaurant(name: “Waffle & Wolf”, type: “Coffee & Tea”, location: “New York”, image: “wafflewolf.jpg”, isVisited: false),
Restaurant(name: “Five Leaves”, type: “Coffee & Tea”, location: “New York”, image: “fiveleaves.jpg”, isVisited: false),
Restaurant(name: “Cafe Lore”, type: “Latin American”, location: “New York”, image: “cafelore.jpg”, isVisited: false),
Restaurant(name: “Confessional”, type: “Spanish”, location: “New York”, image: “confessional.jpg”, isVisited: false),
Restaurant(name: “Barrafina”, type: “Spanish”, location: “London”, image: “barrafina.jpg”, isVisited: false),
Restaurant(name: “Donostia”, type: “Spanish”, location: “London”, image: “donostia.jpg”, isVisited: false),
Restaurant(name: “Royal Oak”, type: “British”, location: “London”, image: “royaloak.jpg”, isVisited: false),
Restaurant(name: “CASK Pub and Kitchen”, type: “Thai”, location: “London”, image: “caskpubkitchen.jpg”, isVisited: false)
]

After making the code changes to reference restaurants.*, I ran the sample in the simulator and it worked just fine. Introducing OOP concepts and making this change was the purpose for this chapter. One thing I want to point out: at the end of this chapter, the author includes some links to Swift OOP programming. I am impressed he included a link to a free online course from MIT. MIT is one of the best sources for free college classes, and I rarely see anyone link to them, so kudos to Simon.

 

========================================================================

THE NEW REVIEW MATERIAL BEGINS HERE

========================================================================

Title: Beginning iOS 11 Programming with SwiftBeginiOS11Prgm
Author: Simon Ng
Published: AppCoda publisher
Price: $39, $69, $149
Length: 833 pgs (PDF) (30 chapters)
Book Website: www.appcoda.com/swift

By Mike Hubbartt, © Copyright 2017, All Rights Reserved.

I’ve been a programmer a long time, and have dabbled in mobile development awhile but was unhappy with the iOS tutorials I found on the internet. I came across ‘Beginning iOS 10 Programming with Swift’ after searching for iOS tutorials on Yahoo, and started following the online book, since the developer provides part of the course for free. Other publishers also provide free chapters to interest prospective buyers, since you can try before you buy.

I went through the first five free chapters and had created two new iOS apps fairly easily, so I contacted AppCoda and got the book so I could complete the course. Two weeks after starting the iOS 10 course, Apple released an OS and development tool update, so the publisher released an update to the course. I got the new course and started over, so this review will be from beginning to end of the new course material.

This review covers “Beginning iOS 11 Programming with Swift”, which is for Swift 4, Xcode 9 and iOS 11. The intended course audience is people without programming experience as well as experienced developers wanting to learn the Swift programming language.

CHAPTER 1: The Development Tools, the Learning Approach and the App Idea

This chapter covers what you need to get started: essentially a fairly modern Mac with Xcode. Not too expensive these days, and the only way to go to develop iOS apps, The material is good, plenty of pictures to guide the users, and it should put new developers at ease before they start creating their first app.

CHAPTER 2: Your First Taste of Swift with Playgrounds

This gets you started writing Swift code using Xcode playgrounds. . When I started reviewing “Beginning iOS 10…”, I said that this chapter was useful, but inferred it was unnecessary for experienced developers. The author has enhanced this chapter for this new release of the book and, while it does have good setup information useful for non-developers, the rest of the chapter is worth reading for experienced programmers that are new to programming on a Mac.

Why use Swift instead of Objective-C? Swift is easier to learn as the syntax is closer to English. An example from the book:

Fig2-1 Objective-C vs Swift

Fig 2-1 Objective-C vs Swift

I’ve used Xcode for a number of years, but I like how the author gives an intro to using Playgrounds. Playgrounds are places where you test pieces of code – AKA snippets – during learning or development. Something true about learning to program that is shared with music: you can’t learn how to do it by merely reading theory about it.

The author gets into writing Swift code with Playgrounds in chapter two, but not in detail until covering how to install Xcode for people new to development. He explains the Playground environment so new developers understand how to test their code snippets during the course of this course – good idea.

The Swift coding topics covered after Xcode setup are:

  • constants, variables, and how/when to declare types
  • control flow (looping and using switch)
  • collections (arrays and dictionaries)
  • optionals

Swift can infer what type to use for a variable, but specifying by declaring the types makes code easier to read and helps avoid type issues.

Flow control statements are if-else and switch. I particularly like Swift’s range operator for lower bounds and upper bounds, as it simplifies coding when using switch statements. Collections hold groups of data, and arrays are familiar to developers familiar with other programming languages. Like Java arrays, Swift arrays begin with element 0. Swift has the familiar for loop, but also has a for-in loop to move through dictionary elements.

What are dictionaries? They are like arrays, but they use a key to reference each stored value instead of a number relative to the index. The key can be specific to the data, so this can be quite useful when writing apps that use keys like ISBN numbers for books, account numbers for clients, etc.

The code example for creating dictionaries is simple but useful for people new to them. The last code topic covered in this chapter is on optionals. Optionals let you specify variables without default values, which makes you verify the variable has data before you access it.

Fig 2-2 Optional Var Checking Unwrapping

Fig 2-2 Optional Variable Checking Using Unwrapping

 

Fig 2-3 Optional Var Checking Binding

Fig 2-3 Optional Variable Checking Using Binding

Time to get started building an app, so let’s move on to chapter three.

 

CHAPTER 3: Hello World! Build Your First App in Swift

Every new developer knows what a “Hello World” program is: it’s the first thing you write when learning a new programming language. In this chapter, we create our first Swift iOS app and we call it Hello World. We worked with a Playground in chapter two, but now we will create a project and test it with the Xcode Simulator.

The book uses screenshots with the step-by-step process to show how you create the HelloWorld project. Not difficult at all. When finished, you should see something like this:

Fig3-1 New HelloWorld Project
Fig 3-1 New HelloWorld Project

Make sure you take time to get familiar with the Xcode project screen. You are expected to know where to find each area as the course progresses. The editor area in the center changes, depending on which design element (AppDelegate.swift, ViewController.swift, Main.storyboard) is selected at the left part of the project. The right side of the project is the utility area, where you select properties. You can expose or hide the leftmost and rightmost areas as well as the debug area for a project – this is at the top rightmost part of the Xcode project screen:

Fig3-2 Three Areas of an Xcode Project
Fig 3-2 Three Areas of an Xcode Project

After creating a basic project and a new iOS app, you can run it in the Simulator. One note: the first time you run the Simulator, it takes a while to start, so be patient. The Xcode control to run an app is the right-pointing arrow at the top left side of Xcode:

Fig 3-3 How to Run Apps in Simulator
Fig 3-3 How to Run Apps in Simulator

In this chapter, Simon points out something nice in the new version of Xcode 9: you can now run multiple simulators at the same time. Now that I like, as you may want to have an Apple Watch sim going the same time as iPhone and iTablet simulators.

Now it’s time to add an interface to the HelloWorld app. The book points out you can easily add one or more views and link them together without writing a line of Swift code. It’s similar to some RAD products like Power Builder and Lotus Notes. Xcode uses one View Controller per iOS app screen. The Interface Builder is shown below, with the View Controller in the middle, with the Button object in the center of the View Controller:

Fig 3-4 Xcode Interfact Builder Screen
Fig 3-4 Xcode Interface Builder Screen

I ran the Simulator after adding the Hello World button and saw this:

Fig 3-5 Simulator with Hello World Button
Fig 3-5 Simulator with Hello World Button

That’s it. I didn’t need to write any code to make a simple iOS app. It is simple. Hopefully this encourages people with good ideas but no programming experience to try to make something for themselves or for others.

The next step in the book is to add some code to make the Hello World button do something. We access the ViewController.swift file in Xcode and add the following Swift code to have the button say Hello World:

@IBAction func showMessage(sender: UIButton) {
 let alertController = UIAlertController(title: "Welcome to my first app", message:
 "Hello World", preferredStyle: UIAlertControllerStyle.alert)
 alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
 present(alertController, animated: true, completion: nil)
 }

I want to echo the tip the author makes about entering code vs copying and pasting.  The easiest way to learn is to do, not copy.  Take the time to type, as you will see how easy it is to make mistakes, and when you fix them you learn a bit more. My 2 cents on developing:

A developer writes their own code, they don’t copy and paste and modify someone else’s code – that isn’t creating code, it’s appropriating.  If you want to work as a developer, you better remember this tip, because professional developers do not look fondly on people copying and claiming the work of another person.  It isn’t ethical.

 

Now you need to connect the Hello World button to this new code. Select Main.storyboard in Xcode, select the Hello World button and hold down the Control key and drag up to the yellow View Controller object at the top of the View Controller, then select showMessageWithSender: option in the popup box.

Fig 3-6 Connect Button and Swift Code
Fig 3-6 Connect Button and Swift Code

Run the Simulator again and now you see that the button does something:

Fig 3-7 Working Hello World Button
Fig 3-7 Working Hello World Button

There are a couple of exercises at the end of the chapter. I wanted to see what I learned, so I added 3 more buttons, which is what exercise 1 is, however I wanted to use different messages so I added additional code to ViewController.swift and linked it to each button. It was fun, and the best way I know to really learn. If you want to learn how to write code or develop apps, you must do it, mot just read about it. I strongly encourage people to do both exercises and play around on your own. It helps.

 

CHAPTER FOUR: Hello World App Explained

This chapter explains in detail what happens in the first app you create: Hello World. Take time to go over this chapter, especially if you are new at learning to program, as the explanations here lay a foundation that grows in future chapters.

How does the interface you build connect to Swift code that you write? It is important to understand this now, so consider the TV remote example the author uses:

“The user interface in the storyboard is the interface, while the code is the implementation. The user interface objects (e.g. button) communicate with the code via messages.

Specifically, if you go back to the Hello World project, the button you added in the view is the interface. The showMessage(sender:) method of the ViewController class is the implementation. When someone taps the button, it sends a showMessageWithSender message to ViewController by invoking the showMessage(sender:) method.”
– Simon Ng, Beginning iOS 11 Programming with Swift, Page 95 & 96

As the author points out, this demonstrates the OO concept of encapsulation. The specifics of what happens is hidden when the button is pressed. For example, the programmer could choose to send an email as well as display “Hello World” when the button is pressed, and the button pusher wouldn’t know.

What happens when the Hello World button is pressed? The button is event-driven, meaning that it does something when the button is pressed or released. In this app, we made the action occur when the button was released. This illustration shows the process:

Fig 4-1 What Happens in Hello World App
Fig 4-1 What Happens in Hello World App

We used a method to specify the message we displayed when the button was released. Methods provide functionality to objects – they make things happen. In this example, the class ViewController has a method called showMessage() – Swift methods are declared with the func keyword, and the @IBAction keyword in showMessage() connects source code you wrote to the interface button object you added using the Interface Builder.

Fig 4-2 ViewController and showMessage
Fig 4-2 ViewController and showMessage

This chapter is loaded with great information for new developers, as well as people learning Swift. Take a day to cover the material the first time, then take a second day before progressing on to chapter 5. You will learn important information that will help you further into this course.

 

Advertisements

By Ted Bade,  © Copyright 2011, All Rights Reserved.

Product: iBank 4
Company: IGG Software (http://www.iggsoftware.com/)
Price: $59.95 USD (single user license)
Available at: http://www.iggsoftware.com/ibank/ (Also available through the App store)
Required OS: Mac OSX 10.5.7 or higher

iBank is a terrific alternative to any version of Quicken. It is robust, has an intuitive easy to use interface, and offers a lot of useful tools for managing your personal finances. If you are looking for an alternative to the old Mac versions of Quicken and/or find you cannot stomach the pathetic “Quicken Essentials”, you won’t go wrong with iBank.

I will be looking at iBank from the viewpoint of a person who has been using Personal Finance applications for well over ten years. This also means I have many habits and expectations about a financial program (both logical and illogical ones ☺), as well as a LOT of financial history. Also, my data needed to be transferred to iBank manually, not imported from an old Quicken file, because I did try using Quicken Essentials for a time before moving to iBank. There is no way to import QE saved data into iBank. However, iBank will import files from the older versions of Quicken, including Windows versions. The import process brings in your various accounts, transactions, investment account information, and budget categories. It won’t bring in scheduled transactions, reports or budgets.

Getting Started

There is one issue to consider with regard to importing from Quicken. iBank doesn’t use the Quicken save or backup file to import, but it imports from an exported QIF file. In my case, I had already converted to Lion (MacOS X 10.7), and had been using QE for a while, so there was no QIF export available for me. If you don’t export from Quicken before you convert to Lion, you might not have any way to run the old version of Quicken to perform the export, which means that you will have to do the import manually. I expect that the same thing would be true if you were previously a Windows user, and didn’t manage to keep your old machine (perhaps it died, which is the reason you are converting financial applications). I imagine a Window’s user would have one option of running Quicken for Windows in a virtual Machine on the Mac to perform the export file creation.

Author’s Note: Being a curious kind of guy, I asked iBank’s customer service what my options are. I was pleasantly surprised by the reply. Essentially, their customer service department offered to do the conversion for me. They provided a small script app to grab the data and to create a secure file that could then be emailed to customer service. For QE files, they suggested asking Intuit to do the conversion. So, even if you made the jump, there are options. Great job IGG Software customer support!!

If you have a QIF file to import, the process is pretty nice. iBank analyzes the file you give it, and then asks you to verify the the account types. This is mainly due to the fact that iBank offers more account types than Quicken does. You can choose to change an account type to one of iBank’s more specific choices. iBank then translates the date into a new iBank file. Once it is done, you need to go through your accounts and make sure they are correct. In the case of the file I imported, it has a muddled history going back to early 2001, so the import would probably have required more work then just stating over. This was my fault, since I did a poor job of cleaning up my Quicken files and they had issues. I don’t expect there would be any real issues for people importing with only a few clean years of history, or even ten years of well kept files! Ideally, it would be terrific if you could run iBank side by side with Quicken (or any of the other financial applications it can convert from), to verify account data.

 One thing I have learned about financial programs (and it actually applies to any program), is that the people involved with creating it decide on a method for doing whatever it is that the program does. This method may or may not be exactly the method you are familiar with. When I attended elementary/high school, there wasn’t a course covering personal finances. So most of my methods have been monstered together from what I have learned from various sources, friends, books, and financial applications. Consider also, there is an element of anxiety in moving to a new financial application. A simple mistake might mean an important loan payment is forgotten or a checking account is over drawn. Because of this, one needs to pay particular attention to what actually happens when you use a new program. Don’t assume anything.

In my case with iBank, years of complacency using one version or another of Quicken left me expecting an application would respond in a particular way. iBank is not a clone of Quicken, and so it follows it’s own set of rules and processes. I say this not to criticize, but point out the way it does business. I want to point out iBank works differently than Quicken, and new users need to consider each action taken while learning the software. Once past this awkward application learning period, people should find that iBank is very intuitive and easy to use.

iBank provides a view of your finances when it initially opens. On the left side there is a column that gives access to various things, such as accounts, websites, and other functions. The right side is a window showing information about the item selected on the left side bar. For instance, if you have selected an account, the register is shown, if you select a web site, the browser function opens to load it, or if you select a report, the report is displayed. The side bar offers a lot of choices, more then will show on the screen, you will have to scroll down to find everything. Accounts occupy the top of the list, which makes sense, since you will spend a lot of time working with them. The side bar offers areas for Accounts, Websites, Reports, and at the bottom a Manage area providing a variety of functions (including syncing with the mobil version of iBank, which I didn’t test). Accounts are organized in order of creation, but the user can drag the icon to any position. I personally like to keep my most active accounts near the top, for easy access.

Transaction registers offer three views. The regular register looking view, a cover flow view, and a reconcile view. I am not totally sure what functionality the cover flow view actually provides. It allows one to slide along through the transactions in the account in a cover flow like method (displaying the icons related to the accounts). It also provides a chart on the bottom showing the value of the account over time. Clicking on the chart brings up the transaction you clicked. The chart lets you visualize the account value over time, so you can see the rise and fall of a checking account from paycheck to paycheck. It also shows the minimum and maximum values in the account. For a credit card, you can easily find the periods of most charging.

One things I really like about iBank is that it can be very visual. For instance, iBank uses icons for various category types to make it easy for you to recognize them in a register. You can use the ones included in iBank or find those of your own to use; the process is as easy as cut and paste. You can also set a color to a category, then the register line for a transaction of that type is tinted with the color. For instance, I use green for grocery transactions. When I look at the register, it is easy to locate all the grocery transactions by finding the green tinted ones. Both of these methods are a big benefit to people who are very visual.

You can choose to have a tool bar near the top of the iBank window, below the menu bar; the default tool bar option has buttons for several common features. The tool bar can be changed to satisfy your way of doing things. For instance, iBank has a calculator function, which can be added to the tool bar if you find it useful. Alternatively, you might not want the tool bar and be content to use the menus.

Finally, the iBank window offers a summary area (Summary Page) showing how much you have and how much you owe, it will also turn into a “Net Worth” bar graph if you click it’s top bar. This summary gives a quick overview of your financial picture. This area covers the lower portion of the side bar, and you can choose to hide it if you would rather see more of that area.

Before you start using iBank, you will need to create (or import) all your accounts. If you are in a position to import from another financial program I highly recommend doing this. Although you should spend some time making sure the translation was correct, you won’t have to spend the time it takes to create each account individually.

One improvement I would like to see with iBank’s manual is a section giving a logical method for people moving accounts in manually. Their manual is written with the view point that all accounts have been created and all you might need to do is create a new account to add to the picture. While the manual explains quite well how to create new accounts, it doesn’t suggest an order to create them in if you start from scratch. I highly recommend that you begin with the checking (or whatever other) account you use to pay the majority of your bills, followed by any others you use for this purpose, then create credit card accounts, loans, and finally investment accounts. The reason for this is simple, if you pay your bills, credit cards, loans, and investments from one or two accounts, it is a good idea to have them created before your download transactions for these other accounts.

iBank easily downloads data from your financial institutions. When you create an account, after naming it, you choose which type of account it is, savings, checking, credit card, and so on. Then iBank downloads the current list of institutions that fit into this category. Hopefully you will find your institution in this list. If not, then you can enter the company’s web site manually or enter all your transactions manually. iBank checks for new financial institutions every time you create a new account, unless you create several of the same type one after another. While this is a safe method of business, it does prove a bit tedious waiting the short time for it to check. I found myself tapping the screen muttering, “Hey buddy, I saw that company in the list yesterday, you don’t have to check again”.

In case your financial institution isn’t in the list iBank downloads, there is an option to select: “Other financial Institution”. If you select this option, you can either provide iBank with the company’s web address (where you can download account information), or choose to enter transactions manually. iBank puts this choice, alphabetically, within the list of the several hundred other institutions that are downloaded. Although it is selected by default, one might forget this or choose a different company option, then forget what it was called. It would be a lot nice if this option had a permanent space of it’s own, not part of the list, for easy location and selection when needed.  (Note: a recent upgrade to iBank now keeps the “Other” choice in the list even when you search for the name of your financial institution, which is almost as good as having a dedicated Other button!)

 One VERY cool feature iBank offers is an in program web browser. While some companies allow iBank to download data directly, many others require that you log into your account and download a file. While it isn’t a big deal to run Safari and get the files, the neat thing about iBank’s browser is that when the file is downloaded, iBank takes it in. You don’t have to save it, then open the saved file with iBank. I ran into one odd issue, more with my bank then with iBank. One of my banks requires Safari 4 on the Mac, which means that neither my Lion hyped Mac nor iBank can get transactions from this bank! I did manage to get the transactions using an old version of FireFox. While I can almost justify not having tested Safari 5 yet, I was aghast at needing to use Firefox 3.x!

Logging into the bank with iBank is identical to what you would do with Safari. You will still need your passwords and user name and any other pieces of information the bank might require. There is one issue with iBank’s browser. One financial institution required that a second browser window be opened to initiate the download. iBank’s browser cannot open a second window. In this case, you need to use a regular browser to get the data. Overall, it is very convenient having a browser built into iBank.

Day to day usage of iBank is simple. iBank keeps track of how you do transactions and uses auto fill to reduce your work. For instance, I download my credit card transactions. iBank opens a two pane window, the top showing the newest downloaded, the bottom showing the current register for that account. You look at the transactions and choose to accept them or not, when done you click to bring in all those you accepted.

As you begin using iBank, you teach it which categories various transactions refer to. iBank allows you to create a “rule”, that says something like, all payments made to a specific grocery store go into the category of “Groceries”. Now when iBank sees a transaction with that grocery store, it fills in the category for you. However, some stores have multiple purposes. You can choose to either not create a rule, which means you enter a category every time you download a transaction, or you create a rule, then change the category when the need arises. One issue with not creating a rule is that iBank asks to create a  rule every time a transaction from this company shows up, until a rule is created. Ultimately, this autofill feature saves a lot of your time.

I like to verify that a credit card transaction matches the receipt that I have. There are a variety of reasons for doing this. iBank doesn’t provide a check box or space to indicate that a receipt was verified. Sometimes I need to make sure that one or another transaction was actually made. I have been hit twice by transactions not made by the household showing up on a credit card. I like to take action quickly!

iBank comes with a lot of pre-made categories. As you type a name in the category field, iBank provides a list of categories that fit the letters you type, the list gets smaller as the word completes. While this is a real time saver once you know all the correct names, iBank doesn’t search for the string anywhere in the name, only from the beginning. This process could be made a lot easier if they had used a Keyword search, rather then a Browse search method. So there is a learning curve here. If you choose to use their method, you need to learn it.

iBank organizes categories in groups, then by sub-categories. There is a group called “Utilities”, with sub-categories such as Utilities:Cable, Utilities:Cell Phone, and Utilities:Electric (notice the use of the colon to designate the sub-category). I download a transaction that shows a payment to my cell phone company. If I type “Cell phone” into the category field, iBank finds nothing, since iBank lists this as “Utilities:Cell Phone”. You need to understand their syntax/structure to find the correct category. This is only an issue the first time the transaction comes up. Once you create a rule, iBank fills it in, so you don’t have to type anything unless you need to change the category. It also gets easier as you become comfortable with iBank’s category naming methods. When you need to find how iBank names a category, you can use the menu option to “Change Transaction Type”. Clicking on this menu item opens a list of all the category names, and you can visually search the list to find the appropriate one.

If you enter a category that iBank doesn’t already have, it opens a window to allow you to create a new category. You need to enter various bits of information about the category. iBank’s category organization structure is efficient and I recommend staying with their format. The need to locate a proper category occurs early on. Once you set up a rule or become familiar with the scheme, it becomes easy, however you can easily create all your own categories in a way that makes the most sense to you. This demonstrates another reason why iBank is a great choice for tracking your finances: there are so many ways to modify the application to get it to suit your personal methods.

Some transactions move money from one account to another. When you download transactions, iBank compares the downloaded transactions to those already in the register. If it finds one that already exists, it automatically un-checks the accept check box, since the transaction already exists in both registers. If you did import it, there would be a duplicate transaction. When importing transactions, you need to look over the list and make sure that only the transactions you want to import have the check box checked. Had I known this when I first started downloading transactions, I could have saved myself a bit of time. Luckily, if you do duplicate a transaction, you need only delete the duplicate. The issue is realizing that it was done, which is a good reason for reconciling an account on a regular basis.

I found a few inconsistencies with how iBank works with respect to transactions. The default transaction type often doesn’t make sense for the account type. For instance, when I download a new credit card transaction the type defaults to “Withdrawal” not “Charge” as I expect. For a new checking transaction that I enter manually as I write a check, it defaults to “POS”, not new check number. However, if I change the type to Check, it automatically chooses the next check number in my sequence. Note that if you create a rule with a particular store, the type of transaction is included in the rule, so the next time you download a transaction from that company, it is correct.

 iBank does a very good job of tracking investments. Overall, the process is very simple and intuitive, although there are a few things to remember. If you set up a new investment account to hold shares of various stocks, you need to enter the number of shares you own manually. The number of shares wasn’t transferred from the account I own. Once you enter the total number of shares, iBank will track the share value, provide a chart of the value over time, and even keep track of the cost basis of the stocks or mutual funds.

When you manually bring an existing account into iBank, there are a few things to be aware of. First of all, any past account history is not brought into iBank. While some companies will provide cost basis for an account for iBank, many do not. You can add this information manually. iBank shows only the cash available in an investment account in the register, so if your account has only shares of stocks or funds, it will show as a zero value. The actual value of the account, based on share values as of the current quote download, shows up in the accounts side bar. The value is kept up to date by downloading stock quotes (which includes mutual fund quotes).

Reconciling an account with iBank is easy. You choose the start and end dates and balances, then choose to either reconcile manually or automatically. In the auto mode, iBank accepts all the downloaded transactions between the two dates you gave it, marks then as reconciled, then you verify if this list matches your statement. Manually, it displays the entire register of unreconciled transactions, and you need to click on each transaction to indicate it was on the statement. Once you have a good reconcile, you click a lock icon to lock the transactions as reconciled. If you use the auto mode, you see only those transactions within the dates of the statement, but you need to create a manual method to record that you verified each transaction on the statement. I ran into a small gotcha when I forgot to use parenthesis around the negative balance of a credit card statement. iBank considers any number inside a parenthesis as negative and without a parenthesis as a positive value. When you enter a credit card, you need to be sure the negative balances are within parenthesis, or you get some unusual results. ☺

During my tests I found that for accounts for which you download transactions, the auto method almost always creates a register that looks exactly like the statement from the financial institution. This is a real time saver, as all you need to do is enter the numbers, make sure the difference is zero, and you are done! If there are issues, you then need to figure things out, but this method is significantly faster then the manual method of adding transactions.

Once you get all your accounts into iBank, there are two other things you might want to do. Track where your money goes and how much you have, and create a budget to help you better manage where your money goes and how much you save. iBank offers the tools to help with these items as well.

While recording transactions is a very important part of any financial application, it isn’t everything. Some people like to look at where their money goes, how much their savings is worth, and to keep track of tax related transactions. iBank offers some built in reports as well as a set of very useful tools to create reports of your own. The reports themselves are interactive, so you can easily dig deeper into them if necessary (or if you are curious). The best way to explain this is to consider one of iBank’s included reports. The report called “Last month to date expenses” is an income and expense report. Click on the report icon in iBank’s source list (the left side bar) to run that report. The program’s main window changes to show the report, and there are two pie charts on the top: one for expenses and one for income. Below the pie chart is a key, showing the names associated with the colors of the pie chart. Below the pie charts is a list showing the categories that make up the charts.

Both the pie charts and the list of text data are interactive. When you click on a piece of the pie chart or an area in the list, iBank generates a sub report showing the accounts and/or transactions that make up this section. For instance, if the category is $500 on groceries, you can click on this then see a list of the different grocery transactions which make up the total. If you are inclined to keep precise records of your finances, this is a good way to make sure you didn’t accidentally include a transaction that doesn’t belong. It is also a good way to see where the money goes. You might find that most goes to a particular store. People who might use iBank to take control of their “Fun”spending, as they will easily see where the money goes if they keep good records!

If you find reports useful, you will want to create your own reports. iBank makes the process relatively easy, yet offers the tools to do some very complex things. iBank lets you create reports by walking through a series of screens, each part setting up a different aspect of the report. You start with a report type, then specify specifically what items will be included and the dates to be covered. For example, one report I always set up is a list of charitable contributions I have made in the past calendar year. To create this report I choose Category Detail, include all accounts, but limit the category to charity contributions, set the date to last calendar year, and finally give it a name. Then, when I am working on my income tax, I can run this report, which will provide me with a nice list to print and include in my tax records.

When creating a report, you can get pretty complex using iBank’s “Smart Rules”, which essentially is a group of nested “and” and “or” statements that limit or extend the included items. I have to admit I am not really a report kind of guy, so my use of reporting is very limited. However, it is easy to see that there is a lot of power in iBank’s report wizard to do some very specific things.

Finally, you can easily create a budget for the next year using iBank’s budget tool. Just like the report tool, it is very easy to do. You predict your income first, then predict how much you will spend on various items in the budget. Obviously, any budget is only as good as the validity of the data you use. Often it is easier to create a home budget after you have collected a year or more of data on where your money goes (however, you might need to control the budget before collecting this data ☺). Also consider that people prone to spend too much might well served by creating a budget on specific “fun” or entertainment items.

Once the budget is created, iBank offers two ways of looking at the information. First is the traditional view, which is a window that lists your incomes (on the top of the screen) and expenses (on the lower part of the screen), showing the budget, actual to date, and  amount remaining (over). Each line is followed by a bar graphically showing how much of the budget is remaining (or how far past the value you are). The bar is green for under and red for over and yellow for getting close to the limit. Using this chart, you can easily monitor where you are. The bar graphs give a quick visual review of items. The middle of the screen shows a “remaining cash to spend” as a total, along with a bar graph, and a summary of total incomes/expenses, budgeted versus actual. This is a very useful to easily monitor and keep an eye on the budget.

As with many other screens in iBank, this one is interactive. If you click on an item, you go into an edit mode, allowing you to modify the budget item (come on, no cheating here, this is really important!!).  I do disagree slightly with their handling of incomes. People are paid on a weekly, bi-weekly, or monthly basis. This means that for income, you will be under budget until some time near your last pay period, giving a negative impression for a normal sequence of events. However, budgets are more about watching where the money goes rather then where it comes from. Unless, of course, you are in a field where you have to create income and need a little push to get you going.

iBank offers another method of monitoring budgets, called the envelope method. This is a very practical method for people who don’t use a program iBank does a great job implementing this process. Using this method you have an envelope representing an amount of cash to spend on different budget items. There is one for food, one for housing, one for keeping the car going and so on. When you need to pay for something, you take money from the envelope for that item. You can also move additional money into an envelope if necessary. The idea behind this method, is that you can see how the envelope empties as you spend money. It is a very visual method and has been used by a lot of people to help them take control of their finances.

iBank shows a screen of envelopes; nice green bills stick out the top of an envelope and the envelope shows a black positive number when it is positive. For over budget items, the envelope is closed, the number is red and in parenthesis. The lay out is similar to the the first method with incomes on the top, expenses on the bottom and the middle with some summary information. With this method, it doesn’t show you where you are relative to the period, but the income area shows how much unspent money you have, while the expense area shows how much of each envelope’s total you have spent already. The summary area show how much over or under budget you are and offers a table of days left to the period (usually a month), how much is available (positive or negative), and how much reserve cash you have.

The vendor is very active in updating and improving this program. They host a very active forum where people can ask questions and get answers from users and staff. Their tech support was quick and very helpful. They appear to listen to the comments made by users, and act to modify the program when it makes sense. There were a couple of things that changed while I as working on this review, making the program even better. This commitment to customer service is another great aspect of iBank.

Recommendation

I highly recommend this program. Overall, iBank is a terrific program. Having used it for a while, I find that it is actually more comprehensive and logical than my previous version of Quicken. iBank offers tools for importing your data from other programs, and gives you a wealth of tools for controlling your personal finances. I found iBank to be very easy to use and relatively easy to covert to. The vendor even offer a free download with a 30 day trial period, so how can you go wrong with that?

By Mike Hubbartt, © Copyright 2011, All Rights Reserved.

Software: Tides Calculator
Vendor: Wolfram Research (www.wolfram.com)
Price: $.99

Wolfram’s Mathematica (now version 8.0.4) is a mature product used by many professionals and academics, and the past couple of years Wolfram has started getting developing mobile applications. I’ve already reviewed their Astronomy and Chemistry course assistant apps, which are excellent and inexpensive products for students. This review is on Wolfram’s Tides Calculator, one of their new Reference apps for the iPhone/Touch and iPad.

The tides are relevant to many people around the world that live on or near the coast, or that make a living on the sea. Wolfram provides a low cost ($.99) app that is easy to transport and provides good information about the tides, including Current Tide, High Tide, Low Tide, Average Tide, Tide Forecast/History, and Extras.

Getting Started

I downloaded the Tides app from the iTunes store and it was a typically easy install onto my iPod Touch. I selected the first option (Current Tide), and and the default location was set to Current Location (handy of you are on the go and want the tide info for your current site. As tides are not as much of an issue for us in Minneapolis, MN, I entered Maine for the Location and pressed the Compute button. In a couple of seconds, the app displayed a chart for the tides covering 24 hours, with the time and height of high and low tides for Maine. As I entered the search in the afternoon, the returned results covered the current and next days which is better than forcing one to go to a different path to get the tide info for the next day. One thing to note: this data was computed based on historical data and did not include weather-influenced factors like hurricanes, so take this into consideration if you need current information and bad weather impacts your location.

There is other useful data on the same screen. The tide reporting station for Maine is at Bangor, at the Penobscot River, and the coordinates of the station are included (good for using with Google Earth), along with the relative position of the station in relation to the state of Maine. Another bit of useful information on the screen is sunrise, sunset, moonrise, and moonset. Not all of the screen information is visible at the same time, but it is easy to move around or zoom out as needed.

Next I checked out the High Tide and Low Tide information. I again used Bangor Maine as the location and essentially saw the same information displayed as I saw at the Current Tide screen, although the graphs highlighted the high and low tides respectably. I used Bangor again for the Average Tide option, and there were a few extra bits of information (range of tide, average high tide, average of high and low tides, and average low tide), but had mostly the same information as was shown at the Current Tide screen.

The next option I tested was Tide Forecast/History. Using my favorite (Bangor, Maine) location, I retrieved the tides forecast for 11/24/2011 (Thanksgiving Day in the US) and saw a nice 24 hr graph of the expected tides, with times/heights of high/low tides along with sun/moon rise/set times. Good data for a forecast. Next I left the location alone and changed the date to 11/24/2010 and the app downloaded the historical tide data for last year – also, good data.

Finally I checked out the Extras options and they were: Sunrise and Sunset, Sun Exposure, UV Forecast, Weather and Forecast, Moon Phase, and Properties of Oceans. For Sunrise and Sunset, I retrieved the information for my current location (Minneapolis, MN) for tomorrow and saw the data, plus the duration of daylight (good to know as we edge closer to the shortest day of the year), the altitude and azimuth for my location, a nice graph of the sun path for tomorrow, some cool (to amateur astronomers) star properties, an image of the current Earth/Moon/Sun configuration (science teachers, paying attention?), and the 10 closest stars (including Wolf 359, mentioned once or twice in Star Trek: The Next Generation). Excellent information for educators and astronomers.

Another Extras option is Sun Exposure, where you can enter your location, date, and skin type to compute the most appropriate sun tan lotion needed to protect your body. Nice. With my skin type, I will need an SPF 15 if I head outdoors tomorrow. I like the UV Forecast option too – it gave the current UV conditions, along with a map of most of the country that showed this data, along with the expected time to get a sunburn (based on skin type and exposure), and the recommended SPF factor for sun tan lotion.

The next Extras item I checked out was the weather forecast. I regularly check weather when I fly, and I’m just as interested in the weather when driving in Minnesota in January and February, so this is one of my favorite extras.The forecast for the current day and next day is useful, and the graph for the temperatures for the upcoming week is also good to know (especially as the highs and lows for each day is also included). I also find the precipitation rate and wind speed forecast graphs to be very useful and both enhance this aspect of the app. I should add you can get weather forecasts for other locations than current location, so this could be a nice assistant when planning a vacation.

The next option in Extras is Moon Phase, which provides good info if you’re wanting to look at the Moon. The last Extras option is Properties of Oceans and it provides Ocean Information, Ocean Properties, Speed of Sound in the Ocean, and Pressure Under Water data. Good information for planning a dive, don’t you think?

Likes

  • The price is excellent, and the UI is simple yet functional.
  • This is a good tool to use to help plan a vacation.
  • The app does what good apps do – it retrieves information over the internet (from Wolfram servers), reducing the footprint of the downloaded/installed app.
  • I like how the locations default to the current location (great for lazy mobile device owners like myself).
  • The amount of information in Extras is excellent and really expands the app. Weather is my absolute favorite option in this app.

Dislikes

  • Didn’t like seeing the same information in Current Tides duplicated in the High, Low, and Average Tide screens. I’d rather have buttons at the Current Tide screen that would provide the additional information. I think it might have been better to release a Weather App, which includes Tide information, that a Tides App with weather information.

Conclusion

The information is useful to a lot of people, not just sailors. As a fiction writer, I may need to know past or future tides that affect the characters in some of my stories, and this inexpensive app would be an excellent resource. While I know many people (including me) prefer free apps, it is hard to argue with the low price for this app.

Recommendation

Buy it. Skip the burger on the McDonald’s value menu and buy this app. It is interesting information, and good, inexpensive apps need to be purchased to encourage vendors to continue to provide quality apps at a low price. Wolfram currently has another 8 Reference Apps available, and the next one I’ll review is their Fractals App.

Please let our readers know if you’ve tried this app and your impression of the software. Sharing experiences on expensive apps is important, but so is telling others about good, low cost applications.

Be well.

By Mike Hubbartt, © Copyright 2011, All Rights Reserved.

Software: General Astronomy Course Assistant
Vendor: Wolfram Research (www.wolfram.com)
Price: $4.95

Many modern students use their smart phones in school, and Wolfram understands this so they are releasing a series of course assistant applications for smart phones and devices like the Apple iPhone and iPod touch. I’ve already looked at Wolfram’s Course Assistant for Astronomy, and I wanted to look at Wolfram’s General Chemistry Course Assistant when it was released since I initially majored in Biochemistry when I first started my undergrad degree.

This Course Assistant is sold through the Apple Apps store for $4.95, and I downloaded and installed the app through iTunes, which was flawless. The data (just like in the Astronomy Course Assistant) was organized by categories:

  • Atoms, Molecules, Ions
  • Atomic Structure & Periodicity
  • Reactions & Stoichiometry
  • Gases
  • Chemical Bonding
  • Liquids & Solids
  • Acids & Bases
  • The Nucleus
  • Units & Chemical Properties

Atoms, Molecules, Ions

This category has these subcategories: Find an Element. Find an Isotope, Atomic Properties of Elements, Abundance of Elements, Properties of Monoatomic Ions, and Ion Groups.

I went to the ‘Find an Element’ subcategory and entered 8, and then pressed ‘Compute’ to see the information on Oxygen, which displayed the element name,the location in the periodic table, an image of the element, some basic element properties (symbol, atomic number, electron configuration, block, group, period, and atomic weight), thermodynamic properties (melting point, boiling point – in centigrade and fahrenheit – critical temperature and pressure, molar heat of fusion, heat of vaporization, specific heat at STP, and adiabetic index), material properties (density, molar volume, refractive index, sound speed, and thermal conductivity), electromagnetic properties, reactivity (valence, electronegativity, electron affinity, ionization energies, atomic properties (term symbol, atomic radius, covalent radius, and van der Waals radius), abundance (universal, crust, and human), nuclear properties (half-life, isotopes), and identifiers (CAS and PubChem numbers).

In addition to searching for elements by atomic number, you can also use the number of protons and electrons. My favorite subcategory of this category of the course assistant was the ‘Atomic Properties of Elements’, because the search criteria you can use to find information include atomic number/weight/radius, number of protons/electrons.neutrons, and the Lewis structure.

Atomic Structure & Periodicity

This category has four subcategories: Light & Matter, Electron Configuration, Periodic Properties of Elements, and Ionic Radii.

The ‘Light & Matter’ subcategory lets you compute EM Radiation, the energy of a photon, and photon energy. The ‘Electron Configuration’ subcategory lets you compute configuration information for atoms or ions. The ‘Periodic Properties of Elements’ calculates information for elements and element groups. The ‘Ionic Radii’ subcategory computes radii for monoatomic and polyatomic ions.

Reactions & Stoichiometry

This category has eight subcategories to Solve for Mass/Volume, Convert Mass/Volume, Calculating Molar Mass, Composition of Compounds, Concentration and Solutions, and Equations and Reactions. My favorite subcategory was Equations and Reactions, which lets you plug in data to compute Reaction Enthalpy, the Reaction Equilibrium Constant, balance chemical equations, and calculate theoretical yields. Each section lets you specify 1 to 4 reactants and 1 to 4 products. Very useful.

Gases

This category has nine subcategories to solve for Avogadro’s Law (V or n), Boyle’s Law (V or P), Charles’s Law (V or T), Gay-Lussac’s Law (P or T)/Density or Molar Mass, the Ideal Gas Law (P, V, n, and T), Graham’s Law, Average Kinetic Energy, and RMS Velocity.

Chemical Bonding

This category has two subcategories: Bond Properties of Chemicals and Lewis Structures of Elements. The ‘Bond Properties’ include dipole moment, bond types and bond lengths for water, ethanol, acetic acid, acetone, and chloroform.

Liquids & Solids

This category has three subcategories: X-ray Analysis of Solids (Bragg Equation), Boiling Point of Liquids, and Liquid Vapor Pressure. I really liked how the second subcategory lets find boiling points based on city, elevation or mountains.

This was the only area of the app that I saw an error. I went into all three subcategories and all were blank, even though I waited 10 minutes. I quit the app and after I went back into it I was able to see each subcategory, but then the app locked up for a minute. I was able to restart the app, but I have notified Wolfram about this issue and will update this review as soon as I hear back from them.

Acids & Bases

This category lets you look up properties of acids and bases, calculates the ionization percentage of a solution, determine acidity and basicity of solutions (calculate pH and pOH, H+ and OH-, and look up the pH of a chemical), calculate pKa, and solve for pH or pKa.

The Nucleus

This category lets you look up information on isotopes (get element isotopes, look up nuclear properties, and find isotope half-life), as well as compute carbon-14 dating (if you believe that the earth is actually older than 6400 years). I went into the ‘Isotopes’ subcategory and looked up the isotopes for Oxygen, which showed all of the stable and unstable O isotopes. My favorite subcategory of this section was the ‘Isotope Half-Life’, as you can easily use element name or mass numbers to compute the half-lives of elements, which was interesting considering the reactor problems currently being experienced in Japan (as well as in Chernobyl).

Units & Chemical Properties

This category contains five subcategories: Unit Conversions, Physical Properties, Thermodynamic Properties, Element Properties, and Chemical Properties. The ‘Unit Conversion’ subcategory allows conversions based on length, mass, temperature, and volume. The four types of ‘Physical Properties’ are molecular weight, density,boiling point, and melting point. The types of properties found using ‘Thermodynamic Lookup’ are enthalpy of formation, entropy, free energy, heat capacity, enthalpy of fusion, and combustion heat.

I liked the ‘Element Properties’ subcategories, because it returns a ton of information for each element (the element name, periodic table position, an image, basic element properties, thermodynamic properties, material properties, electromagnetic properties, reactivity, atomic properties abundances, nuclear properties, and identifiers), but that seems to be the same as the data returned in the ‘Find an Element’ subcategory option in the ‘Atoms, Molecules, Ions’ category of the app.

Conclusion

Wolfram has expanded their offerings beyond the first 6 course assistant apps available for the iPhone, iPad, and iPod touch. I tested this app using my iPod touch and was satisfied with the amount of useful information as well as the content layout. I did have a problem at one point and had to exit the app, but it then functioned normally.

As much as I enjoyed this app on my iPod touch, I’d love to be able  to retrieve all of the ‘Element Properties’ (in the ‘Units & Chemical Properties’ category) using a GUI image of the periodic table instead of the keyboard that was implemented in the app. To select elements not included on the keyboard, you just need to highlight the element that begins with the same first letter of the alphabet, then select the desired element. Preferring a GUI for this UI is a person preference and not a bug or error, but it might be more appropriate on the larger screen on the iPad.

Recommendation

A good value. Good data that will preclude the need to look up technical information in a textbook, which is handy for high school or college students.

By Mike Hubbartt, © Copyright 2011, All Rights Reserved.

Software: Astronomy Course Assistant
Vendor: Wolfram Research (www.wolfram.com)
Price: $4.95

When  I returned to college to earn my undergrad degree in Computer Science in 2007, I was surprised to see how many students used their smart phones in school. I started on a Masters degree (MS in SE) in the Fall of 2010 and was surprised to see how many students have embraced mobile devices to help with classwork. With the release of the iPad 1.0 product, I’ve seen little or no use of netbooks on campus, and huge numbers of students using mobile devices to access and retrieve information while studying and in classrooms. I bought a iPod Touch in March and have to admit I’m hooked. The apps I’ve tried look and function very well, so I was pleased to see Wolfram Research releasing course assistants for students.

For the 3 or so readers that are unfamiliar with Wolfram Research, they have been selling Mathematica for many years. Over the course of the product life-cycle they have constantly added functionality to their powerful software. Many universities provide Mathematica for their students at low or no cost, and it is a fantastic product for Math, Engineering, and Science majors. I started using Mathematica 5 and have enjoyed using and reviewing versions 6 and 7 for MacWorld UK, and I cover 8.0 (and 8.0.1) on this blog.

This review covers the Wolfram Astronomy Course Assistant, which is sold through the Apple Apps store for $4.95. I downloaded and installed the app through iTunes, which was as fast as you’d expect. After opening the app for the first time, I noticed the data was organized by categories:

Sky Orientation, Moon, Physical Astronomy, Light and Telescopes, Starlight and Atoms, The Sun and Stars, Black Holes, Cosmology, Solar System, and Life on Other Worlds.

Sky Orientation

This category has data on: Constellations, Zodiac, Reference Points, Basic Angles, Degrees to Right Ascension, Angular Diameter, Size Comparison, Seasons, Periapsis/Apoapsis. My favorite option was the size comparison, where you compare 2 astronomical objects. My least favorite option was Seasons, where you look up the nearest solstice/equinox for a specified date.

Moon

The moon is one of my favorite bodies to observe as it is so close that many features can be seen with binoculars. I liked everything in this category, which covers moon phases, lunar and solar eclipses, and the tides. I checked out the most recent solar eclipse yesterday, and it was yesterday (May 20), although it was not visible from many places as it was primarily seen over the Atlantic ocean.

Physical Astronomy

This section covers Newton’s Laws, Newton’s Second Law, Circular Orbit Velocity, Stationary Orbits, Escape Velocity, Moment of Interia, Rotational Angular Momentum, Kepler’s Laws, Kepler’s Third Law, Kepler’s Third Law with Mass, and Relativistic Energy. All are good to have when taking an astronomy or physics class, but my favorite was escape velocity where you can compute this information for astronomical bodies based on radii of AUs, kilometers, miles, meters, and feet. Mass is set using kilograms, pounds, or grams. Very useful.

Light and Telescopes

This section covers materials useful for building or using telescopes. It uses eyepiece focal length and objective focal length to determine telescope magnification. I also like how it calculated light gathering power, so you can compare 2 telescopes (very handy when you decide to purchase your next telescope).

Starlight and Atoms

There were a few options I really liked, but don’t see a need for the Temperature Conversions as this is fairly simple to calculate and I’ve seen the conversion formulas in more than a few intro programming books. My two favorite areas in this category were the Stellar Spectral Classes (determine the property of stars using class/subclass/luminosity) and the Relativistic Doppler Effect (determine speed of a light source using wavelengths). Good stuff!

The Sun and Stars

A ton of information about our sun and stars. It is useful being able to compute the physical properties of the sun based on distance from the surface.

The Star Properties section of the category provides properties for Sirius, Canopus, Arcturus, Rigel Kentaurus A, Vega, Capella, Rigel, Procyon, Achernar, Betelgeuse, Hadar, Altair, Acrus, Aldebaran, and Spica. The type of data returned for each star was useful, however I’d rather have a dynamic list of stars pulled from Wolfram’s servers than a fixed, hard coded list.

Black Holes

How can you not be interested in one of the most powerful objects in the known universe? This category provides a means to calculate Schwarzschild Radius, Hawking Temperature, entropy, surface gravity, surface area, and gravitational redshift for black holes. Excellent information, especially for students.

Cosmology

This category lets you calculate the wavelength of an object that is red shifted. Nice, but I wish there were more sections than the 3 that are provided.

Solar System

Some good, quick reference information on bodies in our solar system. I particularly liked being able to retrieve images of the planets – you first retrieve a thumbnail image and can select a larger image if you want. I like how much amount data you can retrieve on our solar system bodies. I did use some of the data in the Dwarf Planets section when I wrote my piece on Dwarf Planets (see the Astronomy page of this blog for more information).

Life on Other World

This category consists of inputs to compute the Drake Equation, which accepts various data to yield the probability of life on other worlds. Very handy.

Conclusion

Wolfram has 6 course assistant apps available for the iPhone, iPad, and touch. I tested this app using my touch and was satisfied with the amount of useful information as well as the content layout. I would like to see fewer hard-coded lists in future releases, as Wolfram’s data source servers are excellent sources of materials and I’d love to have the capability of this (and other) apps expanded without needing to download an updated version of the app.

I had no crashes or errors when testing, although 1 time I had a timeout when attempting to retrieve an image of Mercury. As much as I enjoyed this app on my iPod touch, I’d love to see it on an iPad.

Recommentation

A good buy for reasonable price. Good for students in high school or college, as they can have a good valid source of information that will help when they take a class in the fascinating subject of astronomy.

By Mike Hubbartt, © Copyright 2011, All Rights Reserved.

I know it seems like yesterday when Wolfram released Mathematica 8.0, but they just released an update: version 8.0.1. This version is not an incremental update, so the entire application must be downloaded and installed. This update is free for owners of Mathematica 8.0, and it can be installed over or in addition to version 8.0.

8.0.1 Enhancements

The list of updates from version 8.0 to 8.0.1 (courtesy of Wolfram’s site) are:

  • Many new automatic simplifications for derived distributions, including affine transformations, sums of variables, parameter mixtures, and censored and truncated distributions
  • Improved results for Dot with large (> 1,000,000 elements) lists of integers
  • Improved stability under Intel Sandy Bridge CPUs by including a new version of the Intel Math Kernel Library
  • Performance and robustness improvements for many graph and network operations
  • Improved startup time of the front end
  • Improved the creation of MathLink TCPIP connections under certain special network conditions
  • Improved export of Real and “Real32” images to TIFF, to be compatible with more external TIFF image viewers
  • Improved functionality and stability of Home Edition by including more 64-bit components

Click here for a complete list of changes/enhancements to Mathematica, going all the way back to version 1.0.

5-18-2011 Update

Last weekend I downloaded and installed the 8.0.1 release. It is not an incremental update, so it took awhile to download the >2 GB file. The installation of 8.0.1 in parallel with versions 7.0 and 8.0 still on my laptop was nearly flawless, but I had to exit and restart the program to get the application to run without any warning messages (something about an initialization that failed to complete). After the restart there were no more problems (or warnings) and my initial tests with the product have been fine. I did not use a stop watch to time it, but it did seem to start noticeably faster than version 8.0.

By Harry {doc} Babad, © Copyright 2011, All Rights Reserved.

Product: PDFpen Pro 5.2.1 – a tool to split, combine, re-order, and edit PDF files
Vendor: Smile Software
(Developer’s Website)
Cost
: Price PDFpen $55.95, while the Pro Version is $99.95 [USD]. An upgrade from Pen to Pen Pro is available, if desired at a later date. An upgrade from PDFpen version 5 is available for $25. [USD]
Availability: Download (41.7 MB)
Quill Ratings 4.5
A Functional time-limited demo is available

System Requirements: System Requirements:

  • PDFpen 5.x and PDFpen Pro 5.x require: Mac OS X version 10.6 (Snow Leopard) or later.
  • For Macintosh OS X 10.4 and 10.5, use PDFpen 4.7.1 or PDFpen Pro 4.7.1.

Audience: All individuals needing to modify PDF, no matter their general level of Macintosh proficiency. This is NOT an Acrobat Pro replacement, nor is it meant to be, but it’s a darn fine PDF content ‘text’ and PDF page-editing tool.

Strengths: When it comes to modifying PDFs, SmileOnMyMac’s PDFpen far exceed the functionality of OS X’s free Preview and is a one-for-one feature competitor to Adobe’s $449 Acrobat Pro. At only $50, PDFpen goes well beyond Preview’s PDF processing power, yet it offers some of the same features you’ll find in the much more costly Acrobat Pro.

Weaknesses: Within its stated design and functional scope, I could find no serious or even significant flaws in the software. Like all complex and full-featured software packages, the product has both its strengths and an occasion weakness. The strengths includes include a clean but not quite intuitive interface, low cost and exceptional stability. None of my experiments crashed this program. However, an occasional task that isn’t intuitive only took a quick check at the instruction manual or help files. The combination of a Macintosh compliant design, an easy to explore interface, and acceptable availability of help made becoming comfortable with it an easy task.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Doc’s Introduction Including the Publisher’s Summary

Background On This Software Genre — I spend somewhere between six to eight hours a day on my iMac doing research for and writing many articles and an occasional book. I am passingly skillful at most non-graphics oriented software and even review Macintosh software genre tools for word processing, image editing and label creation, email, database creation and use, and internet search. Most of my time is spent either word processing in MS Word [MSW] and on occasion NeoOffice, or in editing and annotating downloaded (mostly) or scanned and OCR’d PDF files using Acrobat Pro or more recently PDFpen Pro.

By circumstance I’ve become quite proficient in using the editing and page reformatting = features of Adobe Acrobat Pro 9.x, in part from having had the opportunity to beta test version 9 for Adobe. I have also demonstrated Acrobat’s editing tools focused narrowly on cleaning up messily formatted web recipes for my local Macintosh users group and in articles for the now defunct macCompanion eZine.

I’m also half-way, perennially, through writing an ebook into which I crammed everything I learned about editing PDFs with Acrobat Pro, a fantastic Mañana project that will serve as a source of at least a baker’s dozen tutorial articles.

Never the less, or perhaps despite this focus, I’ve followed the evolution of Phil Goward’s Smile On My Mac’s (now, Smile software) PDFpen and PDFpen Pro software. Indeed, in back in 2009, for macCompanion [macC], I reviewed PDF Pen 4.0.4 giving it a stingy 4.5/5.0 rating. My June 2005 macC review of version 2.1 rated the product a 4.0/4.5.

Two Things Have Led Me To Re-Review This Product.

First and foremost it was a excellent, easy to learn and use PDF editing tool that met many if not most of my editing needs. The fact that the Smile products were moderately priced, did not hurt my incentive for a re-review.

I have no needs for doing collaborative reviews in PDF format, which I do in MSW. I have never needed to create interactive forms, seriously control document formatting for commercial publication and distribution, or using top-level securitization.

Second, unlike the introduction of Elements by Adobe as a poor man’s Photoshop, and Bento by FileMaker Corporation, it appears that Adobe has not committed to an Acrobat Elements for the rest of us at a reasonable non-business users price.

  • I found a $199 upgrade to Acrobat 9.x to X on the Adobe site,
  • A Student/Teacher edition for $199 or Adobe Acrobat X Professional Upgrade [Mac] for $183 both on Amazon, and
  • A student/teacher edition for $119 and the Pro version for $159 on the at the Academic Superstore site

I found the newest version of PDFpen for ca. $36 but not the Pro version on Amzon.com. Of course Smiles Software offer an upgrade path. – The combination is what Consumer Reports would call a best buy!

Publishers Summary Product(s) Description — Edit PDFs easily with PDFpen! Add text, images and signatures. Make corrections. Fill out PDF forms. Merge, delete and reorder pages. Pro allows you to convert websites into PDFs, create PDF forms, and build a table of contents.

In the Appendix, I show Smiles comparison, using an edited version of the core abilities in PDFpen, PDFpen Pro and Adobe acrobat, with an added bit of Apple’s Preview for information. The short version is provided below.

Features of PDFpen Pro:

  • Replace text in original PDF with editable text blocks
  • Move, resize, copy and delete images in original PDF
  • Overlay text and images onto PDF (for example, sign purchase orders by applying signature image)
  • Perform Optical Character Recognition (OCR) on scanned documents
  • Insert and remove pages; re-order pages in a PDF by drag & drop
  • Copy and paste rich text; retain fonts and formatting when copying from PDFs
  • Select and copy text across multiple columns
  • Fill out and save PDF forms
  • Add (and print) notes and comments
  • Markup documents with highlighting, underscoring and strike-through
  • Save frequently-used images, signatures, objects and text in the Library
  • Use with Page Sender for a complete fax turn-around solution
  • Automate PDF manipulations with AppleScript

Getting Started

This is a well-developed Macintosh application. Drag it to your applications folder. Start using it in demo mode or type in a password. Decide which preference settings you prefer. Check out any readme files. Your good to go.

Working With the Product — My tough love choice.

I knew I was well trained (conditioned) both consciously and subliminally to edit any new PDF in the ‘acrobat’ manner. So, for most of this review, I turned Acrobat Pro off, and instructed the finder to open all PDF files in PDF pen. No you don’t really want to do this – I hated every minute of it!

However, I couldn’t think of any better way to force my self to do ALL my routine work in the Smile product.

Using the Software

Over 3-4 weeks of routine on and off PDF associated work, I did my thing with Smiles latest Pro Version 5.2.1

What thing(s)…

  1. Annotating several dozen downloaded (with Safari mostly) technical articles for my software and greening articles including some posted at a technical meeting site for which I am a peer reviewer,
  2. Cleaning up 10’s of downloaded recipes, both for my general recipes collection but mostly for my new ‘cooking for Kosher-keeping friends’. Cookbook. These download were created by (1) using Apple’s print to PDF feature and either Safari’s (2) new reader tool, or the (3) get a printer friendly copy on a site’s web page.
  3. Working with and extracting technical information from scanned/OCR’d documents, of the still to be shrunk down, collection of paper documents. Much of this was simply annotating the papers for easier future search [HoudahSpot a Spotlight front end] by adding key words, or other notes relating the document to other related technical work.

Some of the items I worked with were documents that I’d printed to PDF from MS Word files, others came to me as PDF files from my PC using colleagues — the remainder, were web downloads from technical information sites. A nice mix, if I do say so myself!

The Bad, but Only Transient, News — The user interfaces, menu and command structure in PDF Pro were sufficiently unique, that my knowledge of Acrobat Pro was a distraction if not a downright hindrance to my relearning the new software. I was also seriously distracted but the tool named created by the software’s developer, that bore little or no relationship to the semantics of the Adobe tool names and at times function. More about that later. As a result, for perhaps a long week of intermittent use, it slowed my work down. This was unlearning curve time, while I tuned in to, and became comfortable with the PDFpen interface. For me, a one time significant but quickly passing productivity problem.

Troublesome Tools Interface, At Least Initially — The lack of the ability to highlight the various icons shown below to show their names, unlike tools in in Acrobat, slowed me down. The help files told me that each tool did, but the icon functions were unfamiliar and their tool names/functions took time to learn.

But checking PDF Pen Help on line helped in making my review possible, but didn’t shorten my Acrobat trained, learning curve. …Old dogs, new tricks?


PDFpen Pro Toolbar [Customized]
Format Menu Text Tools Select Objects Tools

The Good News — I soon learned how to do everything I needed that was within the software’s functions, with the Smiles product. Once I’d learned the interface, it’s like owning and driving both a stick shift high performance car and a family automatic SUV. For less experienced users to those new to PDF editing tools, beyond a PDF reader, that learning curve is more normal, and not at all as steep.

Note — Apple has provided some PDF editing capabilities in its free Preview Application, but I’ve never knowingly tried to use it. Preview has some ability to view PDF files including read, search, and add notes to PDF files; as well as allowing you to annotate image files by adding your own notes, for highlighting text you want to remember, and circling sections you don’t want others to miss. It however it is not, nor claims to be, a full featured PDF editor.

Rather than continue this review, by summarizing the focus of PDFpen and Pro’s main features and where appropriate identifying each feature where PDFpen and Acrobat have functions in common — Reader, check out the appendix.

Note Apple has provided some PDF editing capabilities in its free Preview Application, but I’ve never knowingly tried to use it. Preview has some ability to view PDF files including read, search, and add notes to PDF files; as well as to annotate image files by adding your own notes, highlighting text you want to remember, and circling sections you don’t want others to miss. It however is not, nor claims to be a full featured PDF editor.

Software Focus and CapabilitiesAlthough PDFpen Pro can be used for tasks I don’t yet need, it serves mostly as a tool for PDF file creation, manipulation and ultimately content editing. It is software for people who want to work with, tweak of make major modification to PDF files rather than just read acquired PDF documents.

The product allows you to insert images, text boxes, comments, and links to other pages in the same document. You can also create hypertext links to website or email address, edit text, and draw almost any shape. PDFPen, since version 4.5.2 had added an improved OCR engine, and better scanner support in Mac OS X 10.6.

Specifically, features I value, I can replace text in original PDF with editable text blocks, move, resize, copy and delete images in a downloaded PDF and insert and remove pages; re-order pages in a PDF by drag & drop techniques. The software allows me to to copy and paste rich text from Word or other word processed documents into PDFs and to retain the original fonts and formatting when copying from PDFs into a document into NeoOffice or MS Word. When I need to, rarely, select and copy text across multiple columns that works with a minimal need to reformat the materials to unscramble the words parsed by lines not columns.

The software provides you the ability to use multicolored highlighting and

and remove the background color from imported images, neither of which interest me, yet. According to a tidbit by Rob Griffiths on Macworld, this is great for inserting your signature into PDF documents.

Although I have not yet used the software to develop a table of contents for a long PDF document, I’ll give that a try while working on my new eCookbook, useful since most of its example pages are downloaded and annotated web-blog recipes.

The original Smiles Features Comparisons List also contained information on PDFClerk Pro and Apple’s Preview, which I’ve eliminated as irrelevant to this review.

Kudos

There were two small but useful things I was delighted to easily do in PDFpen that required a round about route in Acrobat Pro 9.x.

  • First adding a new black PDF page was a menu item – no need to import a blank page from the finder.
  • Second, scanning Prescription or Medical ID card, two images are obtained, one for each side of the ID card. Combining these images (two PDF pages) using PDFpen was easy; I never did figure out how to do this in Acrobat. My required pasting the two images to a MSW document and printing that to PDF. Oh, when doing this with PDF pen, DON’T OCR the image… for obvious reasons.

Discomforts

I would welcome an easy way to split a full pdf page in to two or more parts, each part becoming a separate new PDF page. I’ve done this with both acrobat and PDFpen, but it’s a several step process — tedious.

Conclusions and Recommendations

One strength of PDFpen, apart from its lower price, is its simple WYSIWYG graphic interface where you can all the changes that occur as you work, and can undo any actions that don’t meet your needs or intent. Although I’ve gotten quite skillful at using Acrobat 9, there are too my things going on under the hood, to allow me to relax with the software.

Phil G, I will not give up Acrobat Pro for PDF Pen Pro, call it teaching an old man new tricks. But I do thank you, here an in an accompanying article entitled “WYSIWYG or Not which I will post later in the week.”

However, I unabashedly recommend PDFpen and ultimately PDFpen Pro to all of you readers who have not been gifted a corporate copy, of Acrobat Pro. In addition, should you have a copy of an earlier version of Acrobat pro (say v.7 or 8) on your computer, and need PDFpen’s rich feature set — do not pass GO – do not collect (spend) 200+ dollars; check out and do a test run with the Smiles Product.

PS:

I will be shortly posting an article called “WYSIWYG or Not — Web Page Content Redesign in Acrobat (Pro) and Now PDFPen Pro, A Responsible Macintosh Column [MHReports]. It contains my adventures, with the help of Smile’s Phil Goward, in pushing PDFpen beyond it’ design limits to clean up a really cluttered web downloaded obtained by printing a raw blog page recipe to PDF.

– – – – – – – – – – – – – – – – – – – – – – – – – — – – – – – – – –

Appendix

This Appendix contains an edited, truncated version, of the PDFpen and Pro product features as compared to Acrobat Pro 9 (Macintosh) posted on the Smile’s website. I have not, nor needed to validate the accuracy of Smile’s comparison for the all the itemized features of PDFpen, PDFpen Pro, and Acrobat 9. However, I vouch for those I used!

However, all the tools I needed for doing routine PDF file editing and reformatting were available to me. As I mentioned earlier, being a self acknowledged expert at editing in Acrobat was a liability. I’m guessing that most of you, my readers, will not be troubled by such skills so you learning curve will be shorter, or just perhaps just less frustrating than mine.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Copyright Notice: Product and company names and logos in this review may be registered trademarks of their respective companies.
Sidebar #1: Reviews were carried out on my iMac 2.8 GHz Intel Core 2 Duo with 2 GB 667 MHz DDR2 SDRAM running Mac OS X version 10.6.4 with all security updates kept current.
Sidebar #2: Disclaimer: When reviewing software I will often use the developer’s product, functions and features descriptions. Because of this unless I’m quoting directly from another source, I do no cutter up the review with quotation marks. All other comments are strictly my own and based on testing. Why need I rewrite the developer’s narratives, if they are clearly written?