-
BJJ Timer iPhone App
Posted on March 24th, 2009 8 commentsLast night I recieve notice from the app store that they had approved my first submitted application. It took just about 10 days for the process, which wasn’t nearly as bad as I thought it could be. I had read on the forums of people waiting months, or just never getting an answer.
This program is for score keeping of Brazilian jiu jitsu matches, a martial art that I practice regularly. Creating something that I could use in my favorite sport was a good way for me to learn about iPhone programming, objective C and the SDK.
When starting to work with a new language or framework, I find it’s helpful to start with something I know well – that way the learning is focused on the software, rather than on the real world problem I am solving. Had I tried to start by making a game, for example, then I would have had to learn about game design at the same time, dividing my attention.
Submitting to the app store was more about learning the process than expecting this to be a revenue generator. I imagine that the sub set of people that own iPhones and referee Jiu Jitsu matches is pretty small, but at least it will be available for them.
It is available for purchase at the app store now. An update (version 1.1) adds some features for handling ADCC rules submission wrestling matches, and should be available in the next 2 weeks.
-
Open source sounds
Posted on March 21st, 2009 2 commentsSometimes I need a short sound clip for a software project – maybe a click when a user selects something, a buzzer or bell when a timer expires, or some special effect for opening and closing documents. Making and recording sounds can be a real time sink, depending on the equipment and software that you have available.
I will use FLStudio with software synths to make some sounds or pieces of music. The Sytrus hybrid synthesizer is usually my first choice, but recently I have been starting to use the Morphine additive synth. Morphine works well for me if I have an existing sample or recording as a starting point. If you are purchasing an image line product, consider using my affiliate link – you will save 10% on your purchase, and I can earn discounts on my future purchases.
Although I really enjoy working with sounds, I can easily spend hours playing around. Sometimes, I’m better off just finding exactly what I want that someone else has already made. For public domain sounds, FreeSound.org has a great collection. These are available for use under the creative commons license; in effect you need to attribute the work to the creator in a way that doesn’t imply an endorsement.
Recently I found that iStockPhoto now also offers sound files in addition to images. Here you can buy royalty free sound clips for use in any project. I have used iStock for both buying and selling photos, and it looks like their interface for sound files is as good as the one for images. So far their library isn’t as extensive as it could be, but it seems to be growing quickly.
For editing sound files and converting formats, I’ve grown pretty attached to Audacity. This is an open source sound editor, that does pretty much everything I need or could imagine needing. It handles multiple tracks, so it’s easy to layer sounds together to get a special combination. It includes plenty of effects, from the standard amplitude and frequency changes to echoes, phasers and wah type effects. The noise removal and normalizing functions work well, and make it very easy to clean up samples.
Using royalty free samples and open source editing software, I can now get sounds done in a few minutes. It’s not as much fun as building them from scratch with softsyths, but the time savings usually makes up for that.
-
Vector graphics and Clipart
Posted on March 16th, 2009 No commentsOften I need icons for projects I am working on – graphics to go on buttons and controls. Being a photographer, I have sometimes used a photo, processed it with Gimp or Photoshop until it looks like vector graphics, and then used that. Although it does give the flexibility of being able to use an image of anything I can take a photo of, it’s lots of work and then results are not as good as when I get a designer to make a set of custom icons for me. Something though, the nature of the project doesn’t justify hiring someone to generate a set of graphics.
Searching on the web for Clipart has almost always been a frustrating experience – there are many collections that call themselves “free”, but it’s hard to find out exactly who owns the rights to the image, and what their terms of use are. Others require you to buy a CD, or subscribe to a service. It is sometimes possible to find artwork on Flickr, but then there is the delay while I contact the artist and request permission to use it in my project. The other trouble with most clipart that I find online is that it is in a bitmap format, usually png or gif – so editing it is like editing a photo. Image quality degrades it it is scaled up, and it’s generally more difficult to work with.
I was very pleased when I came across the Open Clip Art Library. This is a collection of public domain vector graphics. Most files are available in both as a preview PNG (bitmap) and SVG(vector) format. It is easily searchable with tags or by artist. There are presently 9500 images available. So far I have been able to find anything I needed there.
For times when the vector image needs a little editing, Inkscape is an open source vector graphics editor, available for Windows, Mac OS X and Linux. This does everything I need it to, and then some. Opening an SVG file, removing some elements, resizing and recoloring others, then saving it as a bitmap is quick and easy to do. The Inkscape site has a number or tutorials if you are interrested in learning to draw your own images, or apply advanced effects.
The combination of Inkscape and the Open Clip Art Library has turned preparing icon graphics from a tedious chose to a pleasant experience. For someone like me who has always been less interested in the GUI part of an application, this is a very welcome change from other ways of doing it.
-
iPhone sync with Google Calendar
Posted on March 8th, 2009 5 commentsI had been looking at different iPhone syncing options for my contacts, and it seemed that to do anything with a PC was going to involve using Outlook, which I was reluctant to install. In general, I try to use only open source applications, ones which run under Windows and Linux (and if there is a Mac port too, even better). This was I don’t have to remember different ways of doing things when booting under the other OS, and files don’t need converting.
Instead, I found the Beta of Google Sync for iPhone. This works so well, I was amazed. I have already used Google Calendar (my wife and I share one for keeping each other up to date with our appointments), but I never bothered syncing it with anything. The iPhone sync is outstanding – changes made through the web appear in my contacts and calendar instantly, and vice versa. Now there are several options for syncing Google Calendar and Contacts with Thunderbird, so if I want an offline solution for my laptop or desktop I can go that way too.
Apple’s Mobile Me looks interesting also, although again for the PC it seems to support only Outlook. There is currently a free 60 day trial of Mobile Me available from Apple, so it doesn’t hurt to try that out too.
-
iPhone tableView
Posted on March 2nd, 2009 2 commentsThe Table View is widely used in iPhone apps, and ther are many examples of using it on navigation pages in the iPhone SDK example programs. These examples generally show how to add a tableView that fills the screen, or sometimes with a Navigation Bar element at the top.
Sometimes, we want to use a table view as a smaller element within another view. The iPhone Clock app uses this approache in stopwatch mode to show the lap times.
In this case, the view that contains the TableView will typically be a subclass of UIViewController. We need only add the protocols UITableViewDelegate and UITableViewDataSource to our view. This is done in the header file:
#import <UIKit/UIKit.h> @interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{ } @end
For a simple view, we will need to add the numberOfRowsInSection and cellForRowAtIndex methods. This example shows a table of 5 rows, with cells labeled Item #0 to Item #4.
#import "MyViewController.h" @implementation MyViewController - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return 5; // we want 5 rows in our table. } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *Identifier = [ [NSString alloc] initWithFormat:@"Item #%d", [indexPath indexAtPosition:1] ]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier]; if (cell == nil){ cell = [ [ [UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier: Identifier] autorelease]; } cell.text = Identifier; return cell; } @end
In interface builder, connect the datasource and delegate outlets from your table view directly to file’s owner. There is no need to add a tableViewController to the nib.


