Mobile App Dev

Transmit: Don’t Panic on Pro iPad Apps

There’s been a lot of talk lately about Panic Ceasing Development on Transmit. It’s once again lead to a bunch of gloom and doom about making a living on the App Store and the future of pro apps on the iPad.

Personally, I think this isn’t about the iPad business model - I think it’s about market fit.

I bought Transmit for iOS. I don’t remember the last time I used it. I bought Transmit for macOS, too, but I don’t remember the last time I used it, either (I think I still have the previous version. The next time I actually run it, I’ll likely upgrade).

 1 min read

"App Accomplished" Nearing Accomplishment

It’s been a long time since I’ve done much (really any) blogging, but hopefully that drought will be coming to an end soon. I’ve just turned in my 13th (of 14) chapters of my upcoming book, App Accomplished.

It’s been a lot of work. I knew it was going to be a huge time commitment, and I wasn’t wrong. There were many times I wondered if I would ever be done, but now that I can see the light at the end of the tunnel, it feels really good.

 1 min read

I Am Now Officially Writing a Book

I’ve been working on writing a book for some time now. It’s been through many stages, conversations, outlines, contracts, etc., etc. But for some reason, it never felt real, until now.

Oddly enough, the thing that made it feel real was that I found out the book has been issued an ISBN number. I’m not exactly sure why that made such a difference - maybe it’s all the years I’ve spent writing applications for which the unique ID in the database was the de-facto proof of existence. But in any case, it feels real now. I’m no longer worried that it’s going to fall through or that by announcing it I might be setting myself up for failure.

 2 min read

Finding relevant WWDC videos

As I’ve said before, I find the WWDC videos to be invaluable and I try watch all of them eventually. But there are a lot of them, and it can be hard to find what’s relevant. And a lot of them I go back and watch again when I start working with a different part of a project.

So I’ve developed a trick, and I thought I’d share it with you all.

 2 min read

What I Learned During my Mac App Store Review

Two things happened on Thursday that made it obvious to me what I should write about this week. Mountain Lion was announced, and my first Mac App was approved for the Mac App Store.

Even though iDevBlogADay is about iOS programming, more and more of us are moving from iOS to the Mac. With the announcement that GameCenter will be coming to OS X, I’m guessing that more iOS developers might be thinking about coding for the Mac now than might have been last week.

So today I’m going to talk about my experience in getting my first App on the Mac App Store and specifically the differences in the approval process between the Mac App Store and the iOS App Store.

 8 min read

HTTP Testing to the edge on iOS: The School of Hard Mocks

I’m a big fan of Automated Testing, even on iOS projects, but even when I was doing mostly Ruby, Java and C# work, I was never a big user of mock objects.

Now, I’ll admit that Mock objects can be useful under some circumstances, but I’ve seen them used too often in cases where a bunch of different developers each build their own little fiefdoms of their own code surrounded by Mock Objects where they interact with anything else. Each developer’s code runs perfectly when being tested against Mock input, but when you put all that code together, you can’t get a transaction working end-to-end, because the real world doesn’t obey the assumptions inherent in the Mocks.

 3 min read

360iDev Conference Notes, or How I Spent my September Vacation

This Thursday, I got back home after four days at 360iDev 2011 in Denver. I went last year, which was easy for me because it was in Austin where I live. I was concerned about the extra time and extra money it was going to take to go this year, since it was in Denver. Now that I’m back, I’m so glad I went. I have no hesitation about recommending it to other people, so that’s what I’m about to do. This post is going to be long, because there was a lot going on, so feel free to skim the headlines and skip the things that aren’t relevant to you.

 11 min read

Steal This Code and Protect Their Data: Simplifying KeyChain Access

Invalidname Meet iPhone Explorer Invalidname Learn Keychain Noel Llopis Keychain is Obtuse

 

 

##The Code

The last couple of months, I’ve been working on my first Mac App (more on that in a later post).  As part of this App, I’m calling a REST API that requires that I have the user’s password for that service to use in the API calls.  Although that API is a minor part of the App, and although the service doesn’t have horrible consequences if someone gets the user’s password for it (in my opinion at least), there was no way I was going to store that password on disk unencrypted.  After all, users have a bad tendency to use the same password for multiple services, and one of those other services might contain important information.

 4 min read

If you want facts, Indie, I've none to give you, at least not yet.

As I’ve written before, I’m very optimistic about the state of iPhone and iPad App development.  I’ve published several apps on the side, and while I’ve worked on several Apps at my day job, Apps was only part of my day job, and I didn’t get a chance to focus on mobile the way I really wanted to.

Well, today, that all changes.

My last day at my day job was the last day of June, I took a long 4th of July weekend off, and now I’m moving into App development full time.  I’m still working on turning my " write iOS Apps from an iOS device" project into a shipping application, and I want to get iCloud-enabled refreshes of some of my existing apps ready for the iOS 5.0 launch this fall.  Hopefully along the way, I’ll find some contract work to help pay the bills.  Please let me know if you run into someone who needs to get an App built.

 2 min read

How can you edit, build and install iPhone and iPad Apps without being near a Mac?

XCAB Intro 011 001

I’m going to walk you through the process that XCAB uses (These steps are taken from this SlideShow).

XCAB Intro 012 001

I have a refurb mini in my Living Room that I bought to be an Home Sharing server, and it’s more than up to the task.  I’ve run it on my laptop, too, from time to time.

As far as the iOS device, an iPad is obviously better to use for editing, because of the screen real estate, but the process is the same for both.

 2 min read

Video Demo: How to program an iPad by using an iPad, no jailbreak required

Here’s a video I put together to demonstrate how to use the code that I wrote that I blogged about last week to program an iPad with an iPad, without having to lug your laptop around with you (or jailbreak your device):

Please excuse the fuzziness, I recorded it from my iPad 2 using a setup that converted it to a Standard Definition Analog TV signal along the way. Hopefully, it is close enough that you can get the idea of how it works.

 1 min read

Programming an iPad with an iPad: Putting the "Mobile" into Mobile App Development

 

This is a talk I gave on Thursday at the Austin CocoaCoder group (and here is the PDF if you don’t do Flash):

Developing iOS apps on your iPad with XCAB

View more presentations from Carl Brown

The code is here on GitHub, and you’ll need this version of iOS-BetaBuilder and accounts with Boxcar and Dropbox.

 

It’s not perfect, yet. There’s no provision for managing XCode projects or xib files (you’ll still have to do all that on the Mac), no auto-complete or refactoring or debugging or instruments and the lag and long cycle time gets old.

 1 min read

Mobile Apps - Boom or Bust? Sherman, please set the Wayback Machine for 1994, and then 1853

In the last few days, I’ve seen reports that Mobile Apps are repeating the 1996 expansion, and reports that Mobile Apps don’t provide a viable business model. I think that  there are elements of truth in both articles, but I don’t think either is an adequate depiction of what I’m seeing. Let me see if I can explain.

Like others, I feel like I’ve been here before, but for me the year wasn’t 1996, but 1994. That year, I was a consultant in Dallas Texas, mostly hooking up Internet connectivity and web servers for companies that nothing to do with technology. At one point I literally couldn’t introduce myself to people without having them say, “Did you say that you do websites? I’ve got to get a website for my business. Can you help me?”

 2 min read

Fixed Price iPhone App Proposals - One Contrary Consultant's View

I’ve seen a some traffic lately about billing and proposals for writing iPhone apps. Most of what I’ve seen revolves around hourly rates, but I think that’s not a helpful way to go, so I thought I’d chime in with my opinion.

I’ve been a consultant off and on for the better part of my career, starting with EDS in 1993. I’ve worked for different consulting shops and independently and I’ve read extensively on the topic. Lately, I’ve been applying a lot of that experience to consulting for companies who want iPhone apps created.

 4 min read

The Hard Stuff - iPhone App Design Edition

I was talking to my latest iPhone App customer today, and now that we’re both able to look at the prototype, we were talking about the features that we could add before the shipping version, or not.  We talked about trade-offs, and I heard myself saying the same thing I’ve said many times before, so I thought I’d write it down.

There are three really hard things about iPhone Apps (at least to me - I have a background Enterprise and Web Apps).

 2 min read

What a Difference 2 Years Makes - a Study in Contrasts With iPhone Ad-Hoc App Distribution

The first iPhone App that I worked on was submitted in October of 2008. The month before we submitted, there was a flurry of emails between me and my customer, a sample of which are reproduced below:

 

Begin forwarded message:

From: Customer

Date: September 16, 2008 12:58:19 PM CDT

To: Carl Brown 

Subject: Re: iPhone project status

 

My Identifier is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Emails omitted for brevity.

Begin forwarded message:

**From: ** Customer

 3 min read

Alternating accessoryView and accessoryType in UITableViewCell

Quick post about a problem I had today.

I’m writing an app for a client that has a checklist component. So a UITableViewCell is in an unchecked state, and then when the user hits it, it becomes checked.

I like the look of the UITableViewCellAccessoryCheckmark, so I’m using it, but I needed something when the cell is unchecked, so I’m using a png that has a circle.

I was having a problem that when the cell was unchecked and I tapped on it, nothing appeared to happen, although if I went to another screen and came back to that one the check box would show up. But, if the cell was checked and I tapped on it, the circle would show up. Here’s the code that fixed it:

 2 min read

A Tale of Two Table Views - my UISearchBar Race Condition that I finally found

OK, so I finally found my race condition, I’d talked about here and here.

So, in my KidChart app, I have a UITableView that has a list of all behaviors that people can pick from:

 

 

and in the search box above, people can start typing to narrow down existing behaviors and then click on one so they don’t have to scroll as much. As soon as the UISearchBar gets focus, it does this:

 2 min read

UI Automation App Input

So, I’ve been doing more UI Automation test work, and I’ve discovered a couple of things. I’m kind of trying to write them up as I run into them, although I’m putting together a helper library that I’ll announce at some point, hopefully soon.

So, what I’m trying to work on is a race condition in my KidChart app. The issue (I think) has to do with notifications during input into an UISearchBar.

 2 min read

Apple iOS iPhone UI Automation Testing: What does Accessibility have to do with it?

Trying to do some UI Automation testing going on one of my Apps today. Have a race condition, so I want to have a script to run it over and over again to have a better chance of catching the problem (more on that in a later post).

So, I just wasted 2 hours trying to test this structure:

And the problem was that I had this set in Interface Builder:

 1 min read

NSInMemoryStoreType is not a good substitute in unit tests

So I was writing some tests for my KidChart app, which uses core data, and I wasted a ton of time, so I thought I’d post to warn people.  I wanted to avoid having to reset the state for each test, and I wanted the tests to run quickly, so I used NSInMemoryStoreType for my persistent store in my unit tests. This is a technique I’ve used before in other programming languages, and I was new to Core Data, so I was applying what I had done before to something I had insufficiently researched.

 3 min read