Skip to content

Posts tagged ‘iPhone’

6
Nov

Finally I can leave Verizon Behind

In a little bit more than one week from now I will receive my iPhone 6 with the no-contract option and will initially use T-Mobile as carrier. Hopefully that works out but if not I still have the option to switch but for sure I will not go with Verizon. After more than 3 years being a Verizon customer I can’t wait to ditch them. This is not only a story about bad customer service but also a story why I would never buy an Android phone because Apple is to a certain degree limiting the power of the carriers. Read more »

12
Apr

Pebble: Review and Outlook

A few weeks back I received the highly anticipated Pebble Watch which I backed through Kickstarter. Since then I am using it all the time even though Pebble is not yet living up to its own promises. On the other hand I have a lot of respect for the Pebble team and what they accomplished so far. To have so much success and then deliver is not easy and requires a lot of work as well as business skills to just survive the onslaught.
Later I heard Dan Bejamin from 5By5 giving a review of the Pebble on Amplified #51 and I was a little disappointed by Dan’s comments because they sounded more like a spoiled brat rather than an adult even though being a spoiled brat seems to be much of the mantra lately in the tech press. For me a comment like I want more is treating the Pebble team like Apple, Google or Samsung but the reality is that Pebble does not have a multi-million R&D budget where it can just hire a bunch of developers to push the development. This is the bleeding-edge of technology and so we need to ask ourselves if we could do it better.

The Good

That said I think the watch should be reviewed and should voice our expectations so that we can push the technology forward. So this is what I liked about the Pebble Watch:

  • Many different Watchfaces which can be easily exchanged.
  • Vibrating on incoming Call or SMS. This way I will never miss a call.
  • Easy to manage music. This is nice when I have my Bluetooth Headset on and I can pause the music right away.
  • Waterproof
  • Magnet-Connected USB Charging Cable. Easily to Connect.

The Bad

Many of the bad items are things that I think will be solved soon and otherwise might need creative thinking due to limitation with iOS.

  • No Battery Indicator except the Battery is Low or when it is fully charged
  • Magnet-Connected USB Cable does easily disconnect and this is hard to discover
  • Battery Charge lasts less than 7 days.
  • No Apps so far (Golf, Biking etc).
  • Email Notification is not working for me.

Improvements

For example the battery indicator does not have to be on watch per se but I could be placed on the Pebble App instead. I also would like to receive a Notification on my iPhone when the Pebble watch disconnects from the Charging Cable and also when the Pebble is fully charged. Another thing I would like is to be able to call one of my favorite phone numbers. I know you can do this with Siri but my English accent does not go well with Siri and most of the time I cam better off taking my phone out and select the number manually. Another think I would like it to use my Pebble together with a Gym Log App where I can use the Pebble to see what is the next exercise / machine, the weight and let me know when to start the next repetition and tell the App when it is over.

Conclusion

Yes, the marketing of Pebble was and still is way ahead of the gadget. On the other hand this is a gadget by a small team and until there is another gadget like this is out we cannot compare it. Pebble is released early, maybe too early, but this has more to do with the funding through Kickstarter, its overwhelming success and the ensuing balancing act between initial success, demand after release and how to mange the business. The Pebble team could have hired a lot of additional people but that would have drained their reserve making it difficult to react to competitors. So I think that the Pebble team decided to focus on the SDK to advance the Watch rather than to create a few Apps even if that meant the Watch looks now limited.

— Andy

14
Mar

iPhone Development Course in Irvine

Finally after several months of thinking about it and preparing my iPhone App Development Course is on-line. It took that long because I wanted to make sure that I have at least one iPhone App published on iTunes before giving the classes so that I have the experience to have gone through the registration and approval process as well as being able to ensure my attendees that I know what I am talking about. As a twist of life it wasn’t the App I initially planned but an App called Stadiyum that was designed and developed in just 4 weeks so that it is approved in time.

This course will be different that the ones I saw posted all over the Internet because this course will use one Example throughout all labs. This way the attendees will see how an application grows and what is involved in getting the application up and running. Luckily for me as well as the class Apple has released XCode4 which is a much better development environment that the old XCode3. XCode4 is much more integrated and all editors are contained in one window.

And even though the class is geared towards business applications there will be some fun activities like doing animations, slide-on views and dialogs, displaying movies and draw custom components. Beside that we will deal with asynchronous image loading, JSon based RESTful web service calls and a framework to easily manage your settings.

Since I started as a professional software developer a long time ago I gave presentations and courses but this course is different in many aspects. First I am fairly new to iOS and so I can relate to the issues of beginners much more than when I talk about Java etc. On the other hand developing on the iOS platform is quite different because it is so user-centric and the developers need to address this from the beginning in order to be successful. There are many books available to help start developing but there is a big step from reading a book to actually writing an application from start to finish and that is why I wanted to convey that through a single example rather than a collection of examples that are only geared towards the current topic.

Hope to see you there soon – Andy Schaefer

10
Mar

XCode4: a Big Step in iOS Development

Yesterday Apple released XCode4, the IDE (integrated development environment) to develop iOS and Mac OS X Applications. After more than 1 year (as far as I can remember) this finally will make developing iOS apps much easier and I think much faster and definitively more fun.

Beforehand in XCode3 the Interface Builder was separated from XCode and created many windows which were hard to track and especially harder to close. Just opening a few XIBs and the screen was cluttered with windows all over the place. The only way to managed them was to close the IB from time to time. Now in XCode4 the IB is integrated into XCode and is part of its UI. Due to the fact that XCode is now a single window application there are no more floating windows around. The only other windows one might see are other applications or the Organizer window which contains the help pages, source control systems, devices, projects and archives.

But that is not everything. Because IB is part of it one can have the UI on the left hand editor and display the related View Controller header class file on the right hand editor. This way it is easy to add new IBOutlet properties and IBAction methods without having to leave the UI editor. This works the same way as when I open the implementation class (.m) and have set the right editor to be on counterpart then it will display the header class (.h) or vice versa. The right window can also be used to display the differences in the versions of one file.

The right sidebar is used to display the File Inspector and Quick Help and if an XIB is opened it displays the  Identity, Attribute, Size and Connection Inspectors as well.

Beside that the Editor itself has improved dramatically with better code completion, error highlighting as well as code snippets. This improves the overall quality of the code written.

The bottom bar is used to display the log files when the app is running as well as the debugger controls. This way I don’t have to search for the Output and it can be easily viewed while the app is running.

Having used IntelliJ IDEA for a long time the XCode is coming close to it making developing Apps much easier and prevents me from juggling a million windows. I have used XCode4 since more than half a year and so I am very happy to see it get publicly released.

That said there is a ton of more functionality that I did not encountered yet or have not used it so I am looking forward to use it even more and share my thoughts with others.

-Andy

 

10
Mar

XCode4, iPhone Class and iOS Recipies

This week was pretty exciting even though I am not going to buy an iPad2 or join into the frenzies.

First Apple release XCode4 which is really great news because now I can develop iPhone Apps on it without having to worry about issues or that it is not fully supported by Apple. This also makes it possible to talk about it publicly and I can use screenshots to discuss issues.

Then I started to work on my iPhone class that I intend to give this year if I find people willing to listen to me. My class is different in many ways but foremost I will use a single example throughout the class. On one hand this is a challenge because there is more to code or to fill in to make it a smooth progress but it also means that I have to develop the class around the labs.

Finally there is another book out there from Matt Drance and Paul Warren from the Pragmatic Bookshelf called iOS Recipes. From the few pages I read so far this books is quite nice and gives beginners and intermediate iOS developers a way to see how other developers do it.

– Andy

15
Feb

Hooray: Stadiyum iOS App Released Today

In less than 10 days the iPhone app I developed the last 4 weeks was released to iTunes today. You can check it out on iTunes. The app was slated to go live before the end of the month but now it is already available.

As hard and exhausting the project was this fast approval is a great satisfaction.

Cheers – Andy

8
Feb

First iOS App Submitted

Finally after 4 long weeks with long hours the iPhone App I was coding is submitted for reviewing on the App Store.

At the very end we not only had to fix last minute issues which are always very dangerous but I also ran into an issue where I could not build and archive my app and then symbolicate a crash log afterwards. This was very bad considering the fact that when users would send in Crash Logs we would have no way to figure out what went wrong. Eventually I had a hunch that having XCode 3 and 4 installed could be the culprit. So I went ahead and installed XCode 3.2.5 onto a Mac that had not prior installation and after resolving all the issues like missing Certificates I was finally able to create an archive and symbolicate a crash log.

Now for the App it means we have to wait for Apple’s verdict but for me it means that I start on another project today but in contrast that is a project with normal hours and no hard deadline.

-Andy

25
Jan

iPhone Crashes in the Nowhere Land

On Sunday I started to have a closer look at the memory management of the application and fully implemented the dealloc methods. Subsequent testing revealed a nasty bug where the application just died when I moved from one part of the application do another but I had not idea why it was crashing and especially where.

Well, at least I had a hunch where it was happening XCode did not point near there. Eventually I started to set breakpoints in all the dealloc methods that I could think of would be called. Eventually I saw that one property was already released and my release made it crash. So I just tried a few things and eventually found the resolution in calling the super class’ dealloc method at the end. So far I did not find any clear instruction if to call it first or last but it seems to be that way that it needs to be called last.

There are a few other things I have to keep in mind when dealing with memory management:

  • Use properties when dealing with references because it does handle re-assignments by itself
  • With properties every assignments to a property must be done with self like this: self.myProperty = …. This way we make sure that the setter method is called and subsequently the object is retained (if marked as such)
  • Called [super dealloc] as last statement in the object’s dealloc method (if provided)
  • Every object creation with alloc or new must be autoreleased when assigned to retaining property

Well, no I can go back and chase some more bugs.

-Andy

19
Jan

Object-C / iPhone and Switch Statements

Lately (meaning the last year or so) I started to be a lousy blogger. Either I have nothing to say or I am so busy that I don’t have time for it. So this time where I started to develop and iPhone app for hire with a hard deadline leaving a lot of work to be done. So far the project progresses well and there is little head banging. Still I ran into an old strange issue with Object-C and wasted a few hours. Eventually I dawned on my that I had this issue beforehand and then it was fixed right away.

So what happened? I wanted to create an enum to store a flag of what the program should do next like display the row, display the row’s detail or query the server for data. That looked like this:

enum Actions {
    row,
    detail,
    search
};
typedef enum Actions Actions;

Then I wanted to use it in a switch-case statement to execute the appropriate action:

switch( actions ) {
    case search:
        NSString *query = (NSString *) action.data;
        return;
    case detail:
        childViewController = [[TestViewController alloc]
              initWithNibName:@"TestDetail"
                                bundle:nil];
        break;
    default:
        NSDictionary *venue = (NSDictionary *) action.data;
        childViewController = [[Test2TableViewController alloc]
                                      initWithRows:rows];
}

But then I get this error: Expected expression before NSString which looks wrong. I am not sure why but the fix is simple. One just needs to wrap each block between case ???: and break into a {} block. That’s it:

switch( actions ) {
    case search:
        {
            NSString *query = (NSString *) action.data;
            return;
        }
    case detail:
        {
            childViewController = [[TestViewController alloc]
                  initWithNibName:@"TestDetail"
                                   bundle:nil];
        }
        break;
    default:
        {
            NSDictionary *venue = (NSDictionary *) action.data;
            childViewController = [[Test2TableViewController alloc]
                                      initWithRows:rows];
        }
}

Hope that helps - Andy