Updates from January, 2010 Toggle Comment Threads | Keyboard Shortcuts

  • neror 2:41 pm on January 5, 2010 Permalink | Reply  

    FTUtils: A New Open Source iPhone Library 

    At the Free Time Studios blog, I just officially announced the release of an open source library for iPhone projects called FTUtils. Check out the post and the screencast:

     
    • Mike Ross 3:28 pm on January 22, 2010 Permalink

      Hey Nathan, playing with your FTAnimation code – good stuff, thanks! Seeing something strange and can’t figure it out. I was hoping you my have a thought. Using the Popin animation, popin and popout work find first time, then each following invocation fails to show the popin animation (also, the view isn’t displayed). But, I can click in the view (triggering the Popout), and the popout animation is shown. Any thoughts? Thanks in advance Nathan.

    • neror 3:56 pm on January 22, 2010 Permalink

      Mike: Interesting behavior. I’m not sure exactly what’s happening. The animations all take over the hidden attribute on UIView to hide or show the view based on the type of animation. This is because the animations were originally designed as transitions. For example, after popOut is finished, the hidden attribute is set to YES right before your delegate selector (if there is one) is called. There might be some kind of race condition going on, but it’s hard to say.

      I can take a look at it if you can give me a small example.

    • Mike Ross 5:24 pm on January 23, 2010 Permalink

      Thanks for taking the time to respond Nathan. It was user error; I was passing in a different key on the addAnimation: call. This led to the problems noted above. Great stuff Nathan – I appreciate you making this available to us.

    • Florent Pillet 8:31 am on March 15, 2010 Permalink

      Hi Nathan, FTUtils is a nice library. I started using it and was wondering why you are setting the removedOnCompletion for animation groups to NO. This makes it so that each animation persists in the view layer, even though it’s complete. Moreover, since you’re keeping a reference to the view (kFTAnimationTargetViewKey) in the animation, this has a later impact on memory management: if I show a view using, say, a back-in effect then make it disappear with a slideOut effect, since the backIn animation is never removed from the layer, there is a live reference to the view, so even if I do a removeFromSuperview: call from the slideOut delegate’s stopSelector, it’s not enough. I have to -removeAllAnimations on the target view first, so that -removeFromSuperview causes a dealloc of the view object.

      I’m interested in hearing your thoughts about these!

      Thanks for making FTUtils public!

    • neror 3:06 pm on March 18, 2010 Permalink

      @Florent Pillet

      I’m glad you like FTUtils and that you’re getting a lot of use from it!

      The reason I set removedOnCompletion to NO is that I want to manually remove the animation in the aminationDidStop:finished: delegate method. FTAnimation assumes that it will always be the delegate for any animations it creates, and it forwards the delegate calls to the startSelector and endSelector. As a result, the animation should be removed every time, but you found a bug in my delegate method. I was calling removeAnimationForKey: inside of an if statement when it should be called all of the time. I’ve pushed up the fix to github already.

      The reason I have to manually remove the animation is because after an “out” animation completes, FTAnimation sets the hidden attribute of the view to YES. In many cases, the view wasn’t being hidden quickly enough after the transform was reset, and the view would flash visible for a split second. My solution was to set the fillMode of the animation to kCAFillModeForwards (or kCAFillModeBoth) and hide the view before removing the animation from it. This is a fairly old optimization, and I don’t know if it’s still necessary. I’ve kept it there just in case. I could probably optimize further by only doing this for “out” animations, but I don’t think there is really any significant performance penalty for manually removing the animation.

      Thanks a lot for pointing this out, and I hope my explanation and fix help.

    • Bruce 9:23 am on May 19, 2010 Permalink

      Hey Nathan, playing with your FTAnimation code – good stuff, thanks! Seeing something strange and can’t figure it out. I was hoping you my have a thought. Using the Popin animation, popin and popout work find first time, then each following invocation fails to show the popin animation (also, the view isn’t displayed). But, I can click in the view (triggering the Popout), and the popout animation is shown. Any thoughts? Thanks in advance Nathan.

  • neror 6:15 pm on June 19, 2009 Permalink | Reply  

    iPhone Development Resources 

    I promised a list of the websites I mentioned in my talk at the HTC on Wednesday. Instead of putting my own list together, I defer to the master: Ari Braginsky. This google doc is where I found most of the sites that I follow daily:

    iPhone Resources

    It’s a huge list, so I’ll give you a few must haves here:

    • Mobile Orchard is a great iPhone Development Blog. There’s lots of great info there, and a pretty good podcast as well.
    • Games from Within – Noel Llopis writes about his experiences as an indie iPhone game developer.
    • Jeff LaMarche’s iPhone Development Blog – Jeff wrote the Apress book Beginning iPhone Development, and his blog is one of the best places to get started with OpenGL ES on the iPhone, especially if you don’t have any OpenGL experience.
    • 148Apps.biz – All about the business of developing iPhone apps. It’s also the home of the app store metrics .
    • These three iPhone analytics companies also blog metrics periodically:
    • TouchArcade is a great iPhone game review site, and a lot of developers are active in the forum there.
    • iPhone Developers on Twitter is a community maintained Google spreadsheet where you can find the Twitter handles of thousands of iPhone developers.
     
    • Glenn Jenkinson 7:04 pm on June 19, 2009 Permalink

      Thanks again for the great class and all these links!

    • Dan Grigsby 11:51 pm on June 21, 2009 Permalink

      Thanks for including Mobile Orchard! We appreciate it :-)

    • neror 12:08 am on June 22, 2009 Permalink

      Sure, Dan. I read Mobile Orchard every day. :)

      I’m also looking forward to your 360|iDev presentation.

    • Matt O'Donnell 11:52 am on September 30, 2009 Permalink

      Morning, I’m enjoying you session right now on Core Animation and checking your site out. Do I need special access to the iphone resources google doc? I get an error saying I don’t have access. Thanks again for the awesome session.

    • neror 12:12 am on October 1, 2009 Permalink

      It’s not my doc, and it looks like the author took it down. :(

      I’m glad you enjoyed the talk. Keep an eye on github for some more code samples.

    • neror 12:58 pm on October 7, 2009 Permalink

      Correction. Ari just moved the google doc. I’ve updated the link in the post.

  • neror 2:11 pm on June 19, 2009 Permalink | Reply  

    Who Wants to Be a Millionaire? 

    As promised, Here are the slides for my talk at the Houston Technology Center’s Web Based Startup School on 6/17/09. The slides aren’t really useful on their own since I only used them as a visual aid in the talk, but they might trigger some memories for those in attendance.


    Who Wants to Be a Millionaire? – What it Takes to Become an iPhone Developer

    Abstract:

    Since the opening of the iPhone app store, many developers have turned themselves into true success stories. While these stories are more exception than rule, their telling has inspired countless others to give iPhone development a shot. The app store is a revolution in software distribution, and it gives independent developers the power to make their own success. If you are considering becoming an iPhone developer, or if you are just curious what it’s all about, this session is for you. You will learn how to get the SDK, how to join the iPhone developer program and some common iPhone business models. We will also look at the technical side of iPhone development and get a look at the tools of the SDK. Since this session falls on the day of the release of iPhone OS 3.0, we will also get a good look at the new features in the OS and SDK that enable even more rapid development and new business models.

    [Download PDF]

     
  • neror 7:51 pm on June 15, 2009 Permalink | Reply  

    I’m Speaking at 360|iDev in Denver 9/27-9/30! 

    I just got confirmation that I’ll be speaking at 360|iDev in Denver this September. I’m really excited about the conference! I was disappointed that I didn’t hear about the last 360|iDev until after it was over, and the raves of Jeff LaMarche and Owen Goss made me a little jealous. If you can swing it, come on out. It should be a great time!

    Here’s what I’ll be talking about:


    Using Core Animation to Build Complex and Attractive Interfaces

    Core Animation plays an integral role in the iPhone user interface and is responsible for much of its intuitiveness. Careful use of animation can make even an average app a joy to use. In this session you will learn how to effectively apply the features of Core Animation in your own apps. After a brief introduction to the principles behind Core Animation, you will learn how it is used in UIKit. Then, we will dig into the meat of Core Animation and how to use it effectively. Using the open source FTAnimationManager as an example, you will learn how to tame some of the complexities of the Core Animation API. By the end of this session, you will be comfortable with Core Animation, and your apps will run more smoothly and be more visually appealing.

    360|iDev Speaker

     
  • neror 11:38 pm on June 26, 2008 Permalink | Reply
    Tags: Apple, Houston, iphone   

    Houston AT&T Store Chosen By Apple Designers 

    When looking for an attractive looking AT&T store to to showcase on its “Where to buy iPhone” page, Apple’s designers matched the Houston AT&T store on 59 between Edloe and Weslayan with the 5th Avenue Apple Store. As far as cell carrier stores go, it’s nice, but I’ll still be at the Galleria Apple Store on July 11th.

    Houston AT&T Store Next to 5th Ave Apple Store

    (Hat tip to the very awesome Swamplot)

     
  • neror 10:01 am on March 28, 2008 Permalink | Reply  

    Apple’s Influence on the Smartphone Market is Painfully Obvious 

    Blackberry 9000 First Look I met a Nokia developer the other day at a local event. We chatted about mobile phones for a good while, and he showed me a couple of the Nokia smartphones he was working with. While none of them are as blatant a knockoff as this one, we both marveled at the strikingly familiar design: shiny and black, surrounded by a chrome ring. RIM’s newest, (the Blackberry 9000) is no exception. Look familiar?

    It’s no secret that Apple has snagged a huge portion of the smartphone market in the last 9 months. In fact, Apple and the iPhone catapulted to #2 in the U.S. market in its first 6 months on the scene. As a new entrant to the market with a single device competing against established players hawking multiple devices, that is quite an accomplishment.

    With that kind of success, Apple’s competitors have been scrambling to crack the recipe to Apple’s secret sauce. So far, they have all failed miserably. While they have all failed in slightly different ways, it is clear that no one in the smartphone market “gets it” like Apple does. It’s the software stupid! Yes, the iPhone is a gorgeous piece of hardware, but, like every other Apple computer, the true power lies in the software. Steve Jobs understands this, and he has said, multiple times, that Apple is a software company. The company makes its own hardware to complement its software and to allow its developers the control they need to produce amazing software.

    Many people have asked me over the past 9 months whether they should get an iPhone or some other smartphone. As much as I love my iPhone, I’ve hesitated to recommend it to everyone. That changed at the beginning of March. Thanks to Apple’s announcement of the iPhone SDK and accompanying iPhone 2.0 software update due out in June, I am now bullish on the iPhone, and I won’t hesitate to recommend it to anyone for business or personal use.

    Apple has made the iPhone business ready by adding support for Exchange ActiveSync, Cicso IPSec VPN, and making some much needed improvements to the email client. Also, as it has done with Mac OS X on the desktop, Apple has made building applications for the iPhone simple and accessible to any software developer. The icing on the cake? For $99/year and a 30% cut of sales, Apple will list your application in the ubiquitous iPhone app store, and the company will handle all distribution and billing. The developer is just cut a check at the end of the month. This allows bright developers to do what they do best: build cool applications.

    The game is changing again, and I have little doubt that Apple will continue to be a force in the mobile market. The rest of this year is going to be very exciting for those of us who love mobile devices, and I’m ecstatic that I will be able to contribute to it.

     
    • MOAT 2:19 pm on March 28, 2008 Permalink

      I bought an iBook G4 a few years ago. Because it has been so reliable, I decided to purchase the iPhone instead of a cheaper style smart phone.
  • neror 10:46 am on January 17, 2007 Permalink | Reply  

    Steve Jobs Hates Java 

    I finally read past the first few paragraphs in David Pogue’s second iPhone FAQ, and I was a little surprised to see this:

    Jobs: It’s not worth building in. Nobody uses Java anymore. It’s this big heavyweight ball and chain.

    As you can probably tell from my last post, I rather like Java, and I also rather like Apple. If that’s how Steve really feels about Java, it’s no wonder that Apple stopped supporting the Cocoa/Java bridge in OSX. I always assumed it was because of the wonderful open-source Objective-C bridge in Python (my personal favorite language) that Apple just couldn’t keep up with. Regardless of the reasons, it’s probably better that Apple chose to focus on Objective-C because the improvements coming in Leopard are very exciting.

    The Cocoa/Java bridge aside, I am disappointed that Steve still harbors the ancient misconception of Java being big and slow. This has not been the case since Java 1.4 was released, and Sun has made great strides in performance in its subsequent releases. From my personal experience working with Java both on the web and on the desktop, the platform is more than capable of performing at a high level.

    This reminds me of a product I meant to tout in my previous post: ThinkFree. It’s a Java applet based online office suite. ThinkFree is a great example of how powerful applets and Java are. Sure it takes a minute to download the applet the first time, but then it’s cached for future uses. It really is Word/Excel/PowerPoint in a web browser, and it it beats the pants off of Google’s office suite feature and performance wise.

    Well, I haven’t written a lick of Java code in 4 months, and I probably won’t for quite a while (at least until the iPhone comes out ;) ). So, this is probably my last post about Java as my knowledge of the language and the platform will become stale pretty quickly. I hope to write more about Python and Django in the coming year, though. My current project makes extensive use of them, and I’m having a blast working with them.

     
    • Zeb 2:53 am on May 24, 2010 Permalink

      Very informative post!

  • neror 11:20 am on January 13, 2007 Permalink | Reply  

    Third Party iPhone Applications 

    Disclaimer:

    I wrote this before I read David Pouge’s iPhone FAQ which mentions that the iPhone’s Safari will not run Flash or Java Applets. D’oh! Since I spent some of my morning on Friday writing this post, i figured I’d publish it anyway. The benefits of Java Applets apply to web apps whether or not they target the iPhone. So, hopefully, there’s some value in here.

    Update:

    It looks like Pouge has recanted the comment about the iPhone’s Safari not supporting Flash and Java. It’s the first item in his second FAQ. This post might be relevant after all!

    Todd wrote a post Thursday on his blog that piqued my interest.

    The only way to write software for the iPhone that I can imagine is via web applications.

    Are Java applets once again an attractive option? Or will devs and users prefer HTML/CSS/JS/Ajax?

    I’m of the belief that Java applets have been given a bad rap because of their early history as slow-performing, memory-hogging toys in the 90′s. The truth is that Java is now a very powerful desktop platform, and applets allow developers to use the full power of that platform in a “web app.” I don’t believe that applets will experience a renaissance in the average data driven Web 2.0 app, especially with the advances being made in the DHTML/Ajax/etc. world, but I think Todd has an interesting point with the iPhone.

    If the iPhone runs a full Java VM, “desktop class” applications are only an applet away. Deployment is simple. Pushing updates is trivial. Applets are also extremely simple to package and deploy. What seals the deal for me is event handling, drawing API, networking, and filesystem access for offline and advanced usage.

    I’ll admit that I don’t have a bunch of experience with DHTML, but I wonder how DHTML compares to Java when it comes to handling events, especially the multi-touch gestures? 2D drawing is also very easy with Java, but this might be a toss up due to Safari’s support of the <canvas> tag. My gut tells me that Java2D is more full featured and easier to use, but I have no evidence or experience to back that up. If the iPhone really runs OSX, then Java also has jogl to do 3D OpenGL drawing. I’m drooling just thinking of multi-touch and 3D. I’m sure you couldn’t do a whole lot with the limited processing power of a small device, but there are still some possibilities there.

    Filesystem and network access is a completely different story. Provided that the applet is signed, and the certificate accepted by the user, the applet has the same rights as any other desktop app when it comes to reading and writing files to the filesystem. I don’t know of any equivalent in the DHTML world. The only thing close that I know of is the great work done by the dojo toolkit team. The dojo.storage API only allows you to store data in the client in a specific location, though. It is just for offline storage, and it’s not a real filesystem API. It also requires Flash to be installed and enabled on the client. A Java applet would have access to all of the preferences, pictures, video, contacts, music, etc. stored on the phone. This is a big difference, and opens up many other possibilities.

    Applets also have all of Java’s networking libraries at their disposal. You can emulate some of this functionality with XMLHttpRequest, but not all. One example that comes to mind and ssh client, or maybe a VNC server over Bonjour (although I don’t know why you’d want to do that). Obviously, there is a lot more at the developer’s disposal here.

    At this point, this is all speculation. I don’t know what kind of tools will be available for the iPhone. If Apple is not going to provide the tools and rights for developers to write real “desktop class” applications for the iPhone, the developer community will find a way to do it on their own. It’s a moral imperative. I’m really interested to see how this all comes out.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel