Off Topic – Blogging and Comments

It’s been over a year and a half that I’ve been working this blog. Not a long time, compared to some of my podcasts, but still a lot of posts, and some good traffic. What I’ve not figured out how to do is to get comments in any significant number. So here is a request to the people who read this blog:

What makes you comment on a blog?

I know that some people like to write posts that are controversial, just to get an argument going in the comments. This drives traffic and I guess if that is your only goal then I guess it makes sense. But to me, I don’t want a yelling match. I have no problem if people comment that I like Apple more than Android, it is a true statement. However, my goal is to learn about all platforms. I would be glad to pick up a Windows RT device, or a Windows Phone, if I thought it was that much different than Windows 8. I have an android device to learn about, and to test writing for that platform. However, I am an old C programmer, and Objective C on iOS is the perfect platform to leverage my skills.

Others like to write posts to review products, with a goal of getting free stuff. I don’t do that because I like to support the developers who make stuff. Years ago I wrote a few shareware programs. I register all my shareware (when that was a thing) in order to ensure that the developers could make enough of a living to keep doing the things they love.

Perhaps I should try and write funny posts, one of my favorite bloggers is the Pintester. She is way too funny. But I don’t think that would be appropriate.

So, I will keep writing my posts about the topics that interest me and that support local developers. If you know a local developer who is focused on mobile apps – let me know. I would love to promote their work and see how their work can help you become a better developer.

The Google Glass Interface

In my last post I asked, rhetorically, was Google Glass a view of the new interface to come. I didn’t answer the question, nor even really think thru it, as I wanted to thinking on the question overnight.  So is it?

I think Google Glass does  a great job of changing how you interact with your mobile device.  It does so in the same way that Siri and other voice tools changes how you look up information or dial the phone.  So to that end, it is nothing new.

However, how it is different is the way you consume the data.  Google has a page for developers on how to work with the interface: here.  The idea is simple, show what needs to be shown, and get the rest of the interface out of the way.  If you’ve been using Google Now and their new Card interface, then you’ve already experienced how Google Glass will provide you data.  If you are a developer and have started working on mobile apps or Chrome apps, and are already using Cards, then you understand the basic framework for defining your interface in Google Glass.

In my other podcast, Games At Work dot Biz, we talked about how Augmented Reality apps and the world of Neuromancer are coming together to change the way we interact with devices.  An example that came to mind was the ability to two people to work together to perform a task with the use of AR and Google Glass.  If you image a doctor or a mechanic performing an unfamiliar task.  They can learn by doing, and by wearing Google Glass, see a projection of an expert performing the same task with their hands out in front of them.  This POV (or Point of View) experience would allow the to mimic the experts movements, and all to the expert to see the action in a virtual 3D world using something like the Oculus Rift technology.

Bringing these two technologies together, Google Glass and Oculus Rift, could change the way we learn and practice new hands on activities.  It also could, dare I say it, “Change the World“.

Is Google Glass the interface of the future?

Your host in Google Glass.
Your host in Google Glass.

I had a chance to head over to Google’s Google Glass tour this morning.  They are starting their tour of the US with a stop in Durham.  Durham has a great startup community, and being surrounded by multiple colleges, universities, and tech companies, it is the home of great app developers.  So it was a natural for Google to start their tour here.

The line was long, but it moved quickly.
The line was long, but it moved quickly.

When I got there, right at 10am, the line was already several hundred people long.  It moved pretty quickly, which was good, and I was in the door and playing with glass in right at an hour.  Overall, it was very easy to use and did a pretty good job of dealing with all the noise in the hall.  Given I have glasses now, having had to give up contacts a while back, I was also pleased that the display was clear and legible.  Looking up into the sky lights, it did a good job of handling strong sunlight too.

Where all the action was.
Where all the action was.

The only problem I ran into was the wireless network.  My glass lost connection and we couldn’t get it to reconnect.  So I had fun taking video, pictures, and looking at the interface, but couldn’t get it to answer any voice queries via Google.

24 Hours with the iPhone 5s

I picked up a new iPhone 5s yesterday. I had been using an iPhone 4S, and have consistently been on the “s” upgrade path, so it was time. So what do I think of it.

It is certainly fast. I don’t mean blow your hair back, screaming fast, I just mean noticeably faster than what I used to use. That is to be expected.

The fingerprint reader works. Well sorta, it works for some of the Apple experiences, but in some of my apps that use the Apple ID for activities, I am finding that I am still having to enter my Apple ID password. I expect this to change overtime as apps are updated to iOS7 (i.e. Apple will enable the app, not that the developer will have to do anything). It is great for unlocking the phone, and having had a complex passcode for a long time, this is a much better experience.

LTE is amazing. Not a big surprise, since I have LTE on my iPad, but upload and download speeds are faster than my home network. And since I have been grandfathered in on the unlimited data plan with AT&T, I am loving it.

However, when all is said and done, it’s like an old glove. I’ve been using iOS7 since the first beta, so nothing really new there. And it’s an iPhone. The quality, feel, and experience is just comfortable. I think I’ll keep it.

Users, Customers, and Consumers

I’ve been working in the IT business for a very long time. I started as a computer operator on main frames and super computers as an undergrad, and even had a home computer years before that (and long before home computers were normal). With that preface, I started thinking recently about the terminology that is used to describe the people who benefit from the code we right. Over the last week, I’ve heard all of the above terms used again. And I started thinking – what does this mean? Are there really different audiences? To that end, I am going to define the terms above, and see if they resonate.

Users:
Originally, there were two types of people when it came to computers – programmers and users. Programmers wrote code and enjoyed hacking around with the hardware and software. A user ran the programs to benefit from the code which was written. A Super User was someone who understood the ins and outs, perhaps even hacked the program some to use it for unapproved purposes. They even wrote scripts (crossing into the world of programmer). But given the early adoption of computers in homes, a user had to have basic knowledge of tape drives (yes I used to have a cassette interface on my first computer), how to connect it all up, etc. In the very early days, users even typed in the code from magazines so they could use their computer.

Customers:
After a while, you could go to the store and buy software on cartridges, floppy disks, and even CD’s. If someone bought the software there were a customer. You needed customers to make software, because they pay the bills. Customers pay more for things they want and enjoy, and as such you listen to your customers and open a dialog via forums, blogs, etc. So customer are good.

Consumers:
So what is a consumer and how are they different then users? Obviously a consumer is someone who “consumes’ you app. Hopefully they use it. And even more importantly, hopefully they pay you so you can keep making cool stuff. But, let’s face it, many consumers expect apps to be free. They want to consume the service, but don’t want to pay for it. The way you monitize your work, is top sell ads to that consumer. So in all aspects a consumer is actually another part of your product (if they don’t pay for it), and they become an asset to the people who pay for your work (now the advertising service). So your customer becomes the advertiser, and the consumer is your user. While financially this makes sense, you still have to make the application experience even better so that the user wants to consume the application even more. I think this is even more challenging thank just focusing on your customer.

Apple’s 5s and 5c – worth the wait?

So yesterday Apple officially revealed their latest new phones – iPhone 5c and iPhone 5s. While much of the announcement had long since been leaked by the supply chain (so much for the secrecy of Jobs, welcome to the openness of Cook), there were still a few surprises – really only on the iPhone5s. The biggest, in my opinion, was the 64 bit architecture and the two chip design (A7 and M7). This should allow developers access to more memory, and with the M7 access to provide sensor data in a very low power consumption state. From a user perspective, that means we can do more and more quantified self activities (think of your FitBit or Jawbone Up), with minimal impact. We know that these types of devices are more and more popular, but being able to just have it all in one device means as a software developer you can now provide this feature without having to develop the hardware.

The improvement on the camera will bring the iPhone5s to the level of many of the other high end mobile phones, so while it is cool, it will probably have a short life of importance as new Android devices are coming out almost weekly.

So as a developer, the iPhone5s will allow for new, cool apps, but the question will be: How popular will it be verses the slightly cheaper iPhone5c? How long before Apple makes the finger print reader available for your apps? If there is a long delay between new APIs and mass adoption of the iPhone5s, then the new announcement should get you more potential customers, but you are best sticking with features available across the iPhone 4S, and iPhone 5/5C. (Still not a bad market, but not as exciting).

Do you plan on using features unique to the iPhone5S, or is iOS7 good enough without M7 chip?

An Event in San Francisco

Yesterday Apple made the event official – at least according to the flurry of post about people receiving invites to an event: here, here, and here.

If the rumors are to believed, this should be the launch of iOS7, iPhone5s, and iPhone5c, with a purchase date almost immediately thereafter. (According to Sept. 20th. In the past, Apple has given developers a heads up about submitting their apps in order to be available at launch. If that’s the case, I would expect the app checkers at Apple to be getting busy really soon!

Are you going to get a new iPhone? If so, are you going for the C or the S? What color will you choose?

Core Data and iOS (Part 2)

In the last post, I described how to create the template Core Data App, and showed you a few screenshots.  In this one I’ll walk thru the files that are created:

First lest’s look at the structure of the project.  We choose a universal app, so we have two storyboards, one for the iPad and one for the iPhone.  We gave our class prefix of TAS (for TriangleAppShow) so our basic AppDelegate is created (both header and object source) as TASAppDelegate.  Our master and detail views are named TASMasterViewController and TASDetailViewController respectively.  I’ve expanded the other subfolders, but won’t go into those files, other than to note that the CoreData.framework is included in your Frameworks folder.  The file we will focus on first is the Data Model – CoreDataProject.xcdatamodeld.

Files Created

Once you select that file, you should see the following screen:Visual Data Model

If, you don’t see the above screen, click on the following symbol:

EditorView

 at the bottom right of the main view to switch to this view.

This view allows you to model the database and it’s relationships.  The Entity Relationship model describes the Entities, Events, Attributes, and Relationships that make up your data model.  The way I like to think of this is as follows:

Entities are tables that store the varies events (rows).  Events are made up of Attributes (columns). Events are tied together via Relationships.  Relationships are either one to one or one to many.  The sample project has only one event , with one attribute and no relationships.  You will create a new event every time you select the + button in the app.  That event will store a single attribute – the timestamp itself.

The next screenshot shows you the simple definition of the event:

Entity DescriptionThe name is Event – this is how we will reference it in the code of the app.  It does not yet have a class (more on this later).  Since there are not relationships, we have no Parent Entity.  We also have no indexes – this are used to optimize search via predefined and maintained sorts.

If you select that attribute timeStamp the right panel will show you its definition.

Timestamp AttributeWe see that this field is optional, with a name of timeStamp.  It is currently not indexed, so we assume that events are store in order that they are created.  The Attribute type is Date, with no other validations.

So far, pretty simple.  In the next post I will look at how the app actually creates each event.

Core Data and iOS

I’ve been working on a new app lately, and I’ve taken this time to try and teach myself CoreData.  CoreData is the mechanism by which Apple has taken traditional SQL database and mapped it to the programming model used in iOS apps.  Over the next few blog entries I will try and describe my learning process, in the hope that it will help others pick up CoreData.  Also, I hope to start a dialog to help others, and myself, work thru any challenges which come up during this process.

If you are just starting, I find that Apple’s Core Data template app, is always a good way of understanding how it is all pulled together.  So let’s give that a shot by starting with a MasterDetail Application.  To do this, create a new Project and select Master Detail:

Master Detail

 

After you select that, fill in the next screen.  I have chosen to create a Universal Binary since I think you should always start from there, it exposes you to the ins and outs of MVC (Model View Controller).  Don’t forget to chose CoreData and Automatic Reference Counting.

After choosing the location for the project… give it a compile.  You should have a working CoreData application, that can render on either the iPad or iPhone simulator.

Master Detail Detail Screen

 

As you can see from the following screen shots both the iPad:

iPad Sample Core Data

and the iPhone:

iPhone Core Dataare working fine!

So what do we really have here? We have a simple app that if you click the plus will create a new record (date time stamp) and a detail screen that will show that time stamp.

Detail Screen

That’s pretty much it.

In the next post I will go a bit deeper on all the files that Apple created for you automatically when you chose this template.

Is Your App Ready

If the rumor mill is to be believed, Apple will announce their new iPhone on Sept. 10th. That is not too far away, and as such means developers are working hard to have launch titles available. Realistically, I doubt that Apple will make the iPhone 5s/c or whatever it will be called, ready on the day of announcement; however, I do believe that they will make iOS7 available almost immediately.
As a developer, I am looking forward to releasing updates of my app that will more closely align to Apple’s new UI vision. I am also looking forward to all the new API’s that Apple has been talking about since June’s WWDC.