Search
Goodies

Social Networks
Designs I Like

Entries in tools (84)

Monday
Nov292010

Three20: waiting for better documentation

Well, I decided to leave Three20 on the side for a while. I'm not alone complaining about the lack of documentation for this library of classes. So I decided to convert my UITextField to a UITextView instead of using TTTextEditor. The result is exactly what I wanted: allow users to enter multi-line of text in this field.

How did I create the rounded frame around the UITextView? With PixelMator I took the standard UITextField box that I stretched on the vertical. This may be not optimal as I will have to create a version for the retina display but, for now that will do the trick.

Wednesday
Nov242010

Great resources at unexpected places

Do you know Bjango? Bjango is a software maker that has many applications already available for the Mac, iPhone and iPad like Consume, iStat Menus, etc. But, they also have a great Articles section on their web site. For an iOS developer looking for tips on iOS app user interface design and many other great articles, this is a very enlightening place to go!

Wednesday
Nov242010

Xcode 3.2.5 Organizer gets updated too

I was surprised to see an update to Xcode 3.2.5 Organizer. The Archived Applications section was redone and I think it is better now.

You can now assign name and comments to each archived applications.

Sunday
Nov212010

Prototyping tools - request for comments and suggestions

This is a call to all iOS developers reading my blog. Please, distribute this call to other developers too!

I'm in the process of building a very big inventory and classification of prototyping tools of every kind from stencil-based to software-based and everything in the middle. If you know about a tool, or you are actually using one for your prototyping needs, please write a comment on this post and tell me about it. This will help me build this real reference to prototyping tools. To help you out, here is a category list that will help me classify those entries.

  • Traditional tools - paper and stencils
  • Electronic templates  - Bitmap based
  • Electronic templates  - Vector based
  • Software based - iPhone/iPad apps
  • Generic software
  • Complemental: Device reproduction
  • Complemental: Icon sets
Thanks!

Saturday
Nov202010

Basic prototyping tools - part 1

Here is my first try with these basic prototyping tools: pencils, hard paper. Stay tuned.

Friday
Nov192010

Writing iOS apps with high level frameworks and languages

Recently, a friend of mine asked me to test one of his iOS app he was working on for a while. A very simple app that is used to fill a very specific need. He wanted my feedback on the app (stability, user interface, wording, etc.). So I installed the whole thing on my iPhone 3GS and gave it a serious look.

After a while, I noticed this app was doing weird things visually:

  • animation of complete views that I was not aware we're available in UIKit;
  • text fields that we're a bit strange looking;
  • navigation bar at the top was moving up and down as I was scrolling the whole table view (that one was the most surprising: the navigation bar never scroll with a table's content!);

Once I was done with my tests, I decided to FaceTime this guy and give him my impressions. They we're mostly positive and I think I've helped him get a few things corrected. When I was showing the navigation bar moving with the table's content, he was not surprised at all. He said: "oh yeah, this is expected as the whole view is a UIWebView with complete HTML/CSS implementation of basic iOS interface elements". What?

This developer is actually using a framework called jQTouch. More information is available here: http://jqtouch.com/. Honestly, I felt a bit deceived. I felt that way because I thought this developer was trying to have it easy! Why not develop in full Objective-C? Why not a native application? The debate was open!

This is not the first time these questions are asked. And this won't be the last time too. After my initial reaction, I changed my stance. I tried to understand his motive for using jQTouch. I think they are reasonable. He wanted to write his first iOS app that is easy with tools that gives fast results. On top of that, the developer is already fluent with web programming languages. So, He went with what he was knowing best. How about the application quality then?

On the application quality, I can see there is a bit of a difference because I'm a developer myself. But, what about the normal user? They don't really care as soon as the app is usable and produce the desired result. I think this is fine. But, the same day, I had a chance to try this application: Ars Technica Reader for iPad (link to the article presenting the app and the behind the scene view!).


They developed this application with HTML5, CSS and JavaScript. They wrapped this stuff in an application wrapper called PhoneGap. The result? Great on paper. Very Bad on the iPad actually. Sooooo bad. Other users seems to agree too.
In this case, using non native language to develop an iOS app is a complete failure to seize an big opportunity. The app is so slow on a device that is known to be so fast. I wonder why this app could even be developed until the end without being scraped and rewrote in native language.

What does this story boils down to?

  1. A developer can use high level framework or language to write an application, a very basic one. And this is ok!
  2. A developer with very challenging application should avoid using these high level languages. They produce portable garbage that can easily go from iOS to Android but this only serves the developer, not the user. 
  3. I understand why Apple was so hesitant to relax their approval rules. Now, we see in action what garbage these tools are capable of. 
  4. HTML5/CSS/JavaScript seems to get a lot of press these days. But in fact, are they the path of future app development on mobile device? I don't think so. They don't produce optimized results. They are too slow. Yes they produce outstanding things from a browser perspective but that is it! Mobile platform are much more than only webkit-based browsers. 
  5. The App Store is bloated with natively written applications that are very badly designed too. This is not my point. My point is having too much of an emphasis on the tools used to write the app, we loose focus on the objective: writing app that are useful, easy to use and enjoyable. Just like the iPhone.
My two cents worth opinion. What is your opinion?

Saturday
Nov062010

Using the Apple's Application Loader

Since a few weeks, Apple doesn't accept uploads of binaries from within iTunes Connect but only while using Xcode Organizer or the Application Loader. Here is a brief overview of the submission process.


When a new application version has been created, at the end of the process, it becomes in a state known as "Waiting for upload". At this stage, the developer needs to use a tool in order to upload the actual binary of the finished application.
From within Xcode's Organizer, there is a button which allows you to submit the binary. When doing so, the built and archived binary must be selected then "Submit Application to iTunes Connect..." button clicked.
The other way is to use the Application Loader from Apple. This tool is available from iTunes Connect main page. Be sure to use the latest version. At this time, version 1.3.1 was the latest one. 
Once started, the first step is to select which application to submit. The drop down list is built from what is in a "Waiting for upload" status on iTunes Connect web site.
Then, a confirmation is presented in order to confirm if the application has been tested on iOS4, the latest version of iOS.
Then, we select the exported application binary (pay attention to the provisioning profile being used to export the archived app. You must select the iTunes distribution provisioning profile).
Next, all the details of the select application is presented and this is the time to actually pick the binary file from your local file system on the Mac. 
Then, we click to send the file to Apple. 
Depending of the size of the file, this process can be quick or longer. 
Final validation are made by the Application Loader.
This complete the upload process.
Going back to iTunes Connect to refresh the status, we now get "Upload Received". 
The next step will be to wait for the review to start.

Friday
Nov052010

A useful Safari extension for developers

This little discovery is very nice: a Safari extension for searching Apple Developer Central from within Safari. Very useful. You can get it here: http://acmeinc.org/extensions/

Sunday
Oct242010

Github - a lot to love there!

If you are a beginner iOS developer or even an expert looking for ways to improve your project delivery dates, look at Github, the social coding web site. According to Wikipedia, Github is "GitHub is a web-based hosting service for projects that use the Git revision control system".

Searching Github with "iphone" keyword returns more than 2500 repositories. You will find so many useful code, libraries, examples and snippets that you can easily integrate in your iOS development projects. I'm following myself nearly 30 different repositories just to keep an eye on updates and new features that might be of good use in my own projects. Many are already used in Ultimate Password Manager.

What you will find there:

  • Frameworks
  • Utilities
  • Subclasses
  • Categories
Most comes with Xcode example project that helps you understand how to integrate these libraries or code example in your own projects. They are a very good way to learn more about iOS in general and a bunch of other stuff.

Here are a few repositories that I use or like very much.

  • MBProgressHUD: MBProgressHUD is an iPhone drop-in class that displays a translucent HUD with a progress indicator and some optional labels while work is being done in a background thread.
  • InAppSettingsKit: This iPhone framework allows settings to be in-app in addition to being in the Settings app.
  • TISwipeableTableView: Allows you to swipe a UITableViewCell and reveal a back view, as seen in the "Twitter" app.
  • TDBadgedCell: UITableViewCell subclass that adds a "badgeNumber" property to the cell.
  • PullToRefresh: A simple iPhone TableViewController for adding pull-to-refresh functionality.
  • ShareKit: Drop in sharing features for all iPhone and iPad apps.
MBProgressHUD example
TISwipeableTableView example
TDBadgeCell example

Sunday
Oct172010

iOS devs: here is a review of "Review" for iPhone

Recently I've stumbled upon a small application for developers and designers of iOS apps called Review. What is this small utility? Well, in a few words: this is an application that allows you to sync graphical files in order to preview them on an iOS device. Here is how it works.

First, you buy and install the iOS app on your iPhone or iPod touch (currently at 2.99$). Second, you go to their web site and download their sync utility. You must install this little app on your Mac in order to sync files to your iPhone Review app. In this utility, you configure which device you want to sync to and keyboard shortcuts for quick syncing of select files from the finder.

Files that will be synched can be seen from the menu bar icon.
On your device, Review let your see incoming files in its Inbox. You can group files together in folders for better organization when you've got many files related to each other for example.
Once the files are within Review app, you can simply select them to review them. Why would this be useful? Sometimes, creating graphical elements on a Mac does look different on the actual iOS device because the difference screen properties like brightness. You can swipe between files for quick review. 

I think this is a very useful small utility but kind of expansive for its very specific usage. How could Review be improved? Here is a few ideas.

  1. Dropbox integration. If this app was integrated with Dropbox, there would be no need to install the sync utility and that wold be really cool. Simple upload graphical files to your Dropbox and retrieve them from within Review. 
  2. The next step would be to be able to create "links" from within the app in order to be able to create workflows and "simulate" an actual app. This would make it really useful to present a prototype of an application. 
  3. Adding a icon preview view would also be useful when we have many files in the same folder. 

You can read promotional material at http://getreviewapp.com/.