API's used in iBeer and iMunchies iPhone Applications - iphone

I just wanted to ask you guys if you have some idea about which API's or techniques were used in iBeer and iMunchies applications? These applications are not useful (in my personal opinion), but does have some cool effects.
Theories are welcome :). Just trying to gain some knowledge. Best Regards.

My guess is they use OpenGL and/or Core Animation. I've never done anything like that before though.

Related

How to get better at UIKit/Core Animation with no design experience?

I've read through Aaron Hillegass's iPhone Programming: The Big Nerd Ranch Guide and I feel I have a solid understanding on the fundamental design patterns/APIs of UIKit. After searching on both here and on Google, it seems that to take the 'next step,' I should practice by writing apps. But: I have no design experience, and I feel that unless I'm doing some work that involves custom controls or any sort of other custom elements, re-writing apps with the same standard controls isn't helping me get better at iPhone dev. So, here are my options:
1) Learn design
2) Find a designer who has some app ideas (note that this is just in my spare time, and I'm not yet looking to make it my full time job, so finding a designer who would just give me free controls/designs would probably be hard)
3) ???
Anybody have other ideas?
TL;DR: I want to get better at iPhone dev by writing more apps for practice, but I'm not good at visual design.
EDIT: To be clear, I am not trying to make these apps with the intention of releasing for the App Store. I am writing these apps to practice iPhone dev and to get better at it.
I'd personally start looking at what other apps are creating as far as custom controls go. Trying to reverse engineer, so to speak, what they are doing will give you insight into what some of the lesser known APIs like CALayer can do for you as far effects, animations, etc. Getting comfortable outside the standard set of controls and APIs will give you the skill set you need so when someone comes to you with a design idea, you can easily translate that into reality. For the next version of my own app I did just this, really digging into cool things you can do.
This blog does just this. His posts come at an angle from how to do custom things that both Apple and third party devs do:
iDevRecipes
Also, here's a reference to really get a sense of some of the cool Core Animation APIs. This guy includes videos demonstrating the effects, as well as Xcode projects:
Subtle Effects With CALayer
Complex Interpolation With CAShapeLayer
3D Objects in Objective-C with CATransformLayer
Combining those with blocks based animations introduced in iOS 4.x can produce some real eye popping and easy to program creations.
I'd suggest, you just start to create some apps. Skill comes with practice.
You will surely have ideas for some apps. Just start with a simple idea.
Even if you are just using the standard UIKit classes you will learn something new. It's easy to think you have understood everything you just read, but in practice you will be facing some little problems you wouldn't even know exist, before.
Also, you can create some good-looking apps, using just the standard UIKit classes, even if you don't have a design background. Interface Builder helps a lot to stick to the iOS Human Interface Guidelines (which you should read).

Getting started with libpurple

I'm writing a Cocoa Touch program that will (hopefully) use Libpurple as it's background. The only problem is that I have no clue where to get started. I've been looking through some source code of applications that do use it, but so far haven't gotten anywhere.
Does anyone know anything that will help me familiarize myself with libpurple?
First of all, you may encounter some trouble, since libpurple is licensed under GPLv2. It may be incompatible with what you are trying to do. (I am not totally sure you can have a GPLv2 app on the App Store.)
Second, you can read purple-client-example.c in the libpurple source, for a super-short example.
Also, Adium might be more useful to study than Pidgin since it is a Mac OS X app, closer to what you might do on the iPhone.
The best way to understand libpurple is to work with Pidgin, the OSS client that uses it. Study the Pidgin implementation, then start to design your own client.
If you plan to sell this, you cannot use libpurple because it is under the GNU license. Please check out my alternative AIM API for Objective-C, with a bit of tweaking, it will probably work moderately well on iPhone: LibOrange

Software development methodology when doing Iphone development

What kind of practices do you do when developing iPhone apps? For instance, do you write up a technical design document of any sort. Do you write down the design of your app at all? Do you implement a certain methodology agile/scrum/waterfall etc...? I'm just curious when working on projects like an iPhone app, what kind of best practices do people use or do people just go at it?
I've worked on a few iPhone apps, and I've found this workflow works pretty well:
Figure out what the app is going to do. Create a one sentence description of the app that embodies what you're trying to do. If you can't explain the core functionality in one sentence, people won't get it!
Create interface mockups for each screen of the app on paper, and then in Adobe Fireworks. Fireworks' native file format is PNG, so it's easy to create images for use in the actual app later.
Figure out how you're going to architect your app using Model-View-Controller and the other iPhone app design patterns (delegates, dataSources, etc...). Don't try to do something other than MVC. The whole SDK is built around MVC!
Start coding! I usually start with the bare functionality first. For a drawing app, I implement the drawing controller and the important drawing views (color picker, etc..) first. I back things up to an offsite SVN repository as I go using Versions (I haven't had much luck with the repository support in Xcode)
Distribute a beta version of the app to a group of AdHoc testers. This helps a lot. Getting the app in the hands of a few extra people really helps isolate usability issues and bugs that are hard for a single developer to find.
Repeat until satisfied and Apple approves :-)
I haven't done much with iPhone development, but its irrelevant. I wouldn't consider it any different from any other developmental process.
The process is different for each case, some have at it and others follow their development methodologies.
As one who is about to dabble in his first iPhone app, I don't think there is any one methodology that rules over any other. You can apply any of the techniques you mention to an iPhone app, just like any other development effort.
A key thing about iPhone apps, or any Apple related development effort, is that Apple sort of forces you to follow certain design guidelines. That is good in some ways (less to concern yourself with) and bad in others (restrictive).
Also, Objective-C and Cocoa Touch can also lend itself to certain ways of programming.
Now, specifically for me, as a sole developer, I will probably:
Jot down high level features of what I want to be included in the first version
Do an interface mockup (either on paper or with a software tool)
Jot down some key objects and functions (psuedo-code)
Set up a source control mechanism (I think this is key)
Start going at it
Possible repeat of any or all of 1-3 :-)
I prefer to start with small proof-of-principle projects to test out different capabilities of the device that I need for my final product. This is especially important on a mobile device like the iPhone, because hardware limits on memory, processing power, graphics, or display size can render some ideas impractical. It's best to know that your application won't work as you imagined after only a couple of days of playing around, rather than after a month of development.
John Geleynse and others at Apple advocate starting your design with a single sentence that describes your product and its intended audience, and building everything around that mission statement. I've found that this works extremely well for determining what features to incorporate or leave out of a product, particularly on the iPhone. Having a simple core product description at the center of your design is also extremely helpful when you need to explain this product to others in your later marketing efforts.
Aside from that, I've found that iterative development incorporating lots of testing and user feedback has worked for me on every platform I've developed for.

Is it feasible to make iPhone apps using just OpenGL and not Cocoa Touch?

I'd much rather code an app using pure C api such as OpenGL, rather that Cocoa Touch. So I'm wondering: is it feasible? Will I be able to maintain the same user experience that you get with Interface Builder?
None of the UI components have OpenGL equivalents. Is it possible? Yes. Is it sensible? No - you would be much better off learning how to use IB and the UIView classes. Coding the UI in OpenGL would be like painting your house with an artist's brush, using hand-made paint instead of Dulux.
Unless you are working on a game, users will expect your user interface widgets to work the same way they do in other applications. You can never emulate that properly, especially if apple decides to fix certain issues in future firmware upgrades, etc...
You will also need Cocoa for integrating with the system in general to store data, prefs and so forth. Is there any specific reason for your reluctance to use Cocoa? If it's because you feel an aversion to learning objective-c, then you really ought to give it a proper chance. It's a great language for building ui apps. If you are trying to port an existing app, then I would suggest building a wrapper that will interact properly with the iphone and call your c code from there.
This is not a fruitful answer (for that, see AirSource's) and rather a comment on your answer about not using Objective-C, but I learned Objective-C a few months after C# and I find I work well in both. Give it a chance and it will surprise you. There's a learning curve and they are different, but the interface tools in particular are so far ahead that you'll probably find it worth your while. It will definitely be better for you and for your app's users than hand-rolling it in OpenGL.
Depends on your app. Mine's an "immersive" game, so I'm using openGL
instead of CocoaTouch,
with a sprinkling of Core Graphics/UIKit calls to generate nice textures.
If I had to display any kind of standard, non-trivial widget, I'd use CocoaTouch.

User Interface inspiration for iPhone Apps

Does anyone have any suggestions for a site that potentially has some inspirational user interfaces for building my own iPhone Apps. It's straight forward to continually build out applications with the conventional UIKit widgets, but it does not set you apart from the competition. Some resources on how to build attractive interfaces is highly desired for inspiration. This is for someone with minimal Photoshop/Illustrator skills, but doesn't mind using sites such as iStockPhoto and working with custom views.
Apple is historically well-known for the user interfaces of its products and programs written for them, but in recent years it has come under fire for seemingly allowing its Human Interface Guidelines (HIG) to lapse. Some of the best Mac and iPhone applications are actually those that deviate from the HIG, but not so much that usability (or acceptance into the App Store) is sacrificed (see link text).
Examples of such innovative iPhone applications can be found in the iPhone app and web app showcases of Apple Design Award winners. These apps have been judged by Apple itself to be creative, inspiring, and exemplary of the iPhone platform's potential as a mobile computing device.
Go to your local best buy, game stop, or any other store with xbox360s, wiis and playstation 3s lying around. Play every single demo on these machines and rate them solely on UI experience. Triple A console games still lead the interface world in my opinion. Soft synths are a close second and also often have beautiful UIs (as Chris Schreiner pointed out). A quick trip through logic will give you a glimpse of apple's own work in that direction.
You might want to check out this article by Matt Gemmell about his process in designing the UI for his Favorites app.
10 Gorgeously Designed iPhone Applications has some very nicely designed apps.
I spent a long time getting this one together, it's a full list of every single ios inspiration / mobile css gallery I could find on the internet. Let me know if you find any others so I can add them!
http://www.kintek.com.au/web-design-blog/iphone-mobile-css-gallery-listing-ios-inspiration/
Maybe this will help: My source of inspiration comes from the software-synth domain. Circle from FAW comes to mind. Ableton Live is (in my book) something to look at.
Heres a good article about designing the Convertbot application. A very simple app that stands out because of its UI.
I hate to burst your bubble, but great design is not something you will get from finding a "site" to look at. Major universities have graduate design programs, that's the kind of place where some people learn to be great designers. Multiple courses and textbooks on design and all the related areas (art, architecture, psychology, biomechanics, etc., etc.) I've seen too many engineers, without at least some of this training, routinely suggest some really bad UI design ideas. Don't be another one of them.
Treat learning great design as something far bigger than finding a site (or learning another programming language, etc.), more like a multi-year endeavor, and you might have a chance.
Or find and team up with someone who's already an experienced designer.