Tag Archives: Software

Working with blocks

In Mac OS X 10.6 and iOS 4, Apple added blocks to Objective-C. When I first started looking at them because various APIs used them, the syntax confused me, and I pretty much ignored them as I was still doing work that ran on iOS 4 and Mac OS X 10.5.

This spring, all my projects moved to iOS 4 and Mac OS X 10.6 as the minimum requirements, so I took another pass at learning blocks. This time, however, I could actually use them and read all I could about them. The more I started looking at them, the more I became enamored with them. I started using blocks in my own APIs and just finished rewriting a significant chunk of code using blocks. Using blocks has made my code more readable and has greatly simplified certain aspects of our app.

One of my co-workers cautioned me to not use blocks just because they were the shiny new tool which I admit was what I was looking at doing. However, after using them, we found that using blocks was pretty much vital to making our code more readable.

For developers that aren’t familiar with blocks, I’d suggest learning them. With most iOS apps having a minimum OS of 4.0, there is no reason to avoid them.

The end of MovieConverter

It was just over 2 months ago when I released MovieConverter to the world to fill a gap where iMovie for iPad wouldn’t import videos from certain video cameras including my Sony Cyber-Shot DSC-WX9. I had originally came up with the idea for MovieConverter back when I got my iPad 2 and started playing with iMovie. I worked on MovieConverter over the summer and finally released it.

When I installed iOS 5 on my iPad 2, I found that iMovie imported more videos than before, but still not ones from my WX9. I made a few minor updates to MovieConverter to get it working better on iOS 5 and pushed it out the door. I got back from vacation the day after iOS 5 got released to the public and quickly updated everything including iMovie. The iMovie 1.2.2 notes said it added support for importing video from additional cameras.

Much to my delight and dismay, the videos from my WX9 imported into iMovie without MovieConverter. I immediately updated the MovieConverter description to say it may longer be needed and dropped the price to free so that no users would be pissed at me for writing a “useless” program.

From an iMovie user point of view, this is great news. I didn’t write MovieConverter for fame or fortune, but it was nice to get a little money from it.

Oh well, now I have to come up with another idea that will have a little more than 2 months on the app store.

iOS App Store’s ups and downs

At the beginning of August, I released MovieConverter to the App Store. I created the app to fill a personal need and decided to see if it met the needs of others. My goal, financially, was to recoup the cost of having an icon created for it; icons are not cheap and since I can’t design one myself, I had to commission one. I used Jordan Langille of One Toad Design and was pleased with his work, so he got my business again.

Within a few weeks, I managed to reach my financial goal and things have still been going; it’s not going to make me a million dollars, but it’s enough to buy a few dinners.

That’s the good part of the App Store; no advertising and I get money. The bad part is the user reviews. Despite my full description and warnings that it may not work on all videos and the videos must play in the Photos app, I’m getting some bad reviews. Most are because people don’t read what the app does and expect it to do something it wasn’t designed to do. Is there anything a developer can do? Nope. Oh well, the app still sells and serves a need.

I wish that Apple would provide a way for developers to respond directly to reviews like MacUpdate does where it clearly indicates that the developer has responded; with the App Store, some developers (against Apple guidelines), post 5 star reviews and respond. If apps I publish on the App Store where my sole means of income, then I’d be really annoyed. However, this is just a side project, so it’s not a huge deal to me.

Protected PDFs are a waste of time

Today I had to electronically sign some documents and then the document was available to download as a PDF. Preview on the Mac wouldn’t properly render it and required Adobe Reader. As I refuse to put that awful program on my machine, I tried to use VMWare Fusion with some PDF writers on it, tried printing to a Printopia printer, but everything failed. I finally put Adobe Reader on another machine, installed CUPS-PDF, played with a few options in Reader (told it to output as an image), and ended up with a 700 MB PDF that Preview could read! I then opened it in Preview and printed it to a PDF. I ended up with an 11 MB file that was had all the Adobe protection stripped out of it. I can’t select text in the PDF as it is an image based PDF, but I didn’t want it. I simply wanted a copy of the document in a format I could use with Paperless.

I love the PDF format, but I hate extensions like this that just make me go through hoops to get what I’m entitled to have. (I could have printed the 37 pages and scanned them back in, but that would be a waste of paper, not time because I spent more time with all my hoops.)

MovieConverter available on the App Store

I’m pleased to announce that my MovieConverter app is now available on the iOS App Store. The app is designed for iPad users that want to import and edit video that was taken with a compact digital camera in iMovie.

The premise is pretty simple, but I think it is a huge help to those that don’t want to travel with a laptop and want to edit video.

While I don’t expect to become a millionaire on this, I do hope to sell enough copies to go out to dinner a few times!

Thanks Apple for the fast turnaround on approving this! Total time less than 9 calendar days from initial submission.

Choosing a software contractor

When companies look to hire a developer to write software, in particular iOS (iPhone and iPad), they expect to hire an expert. However these days everyone and his dog claims to be able write iPhone and iPad software. While this may be true, it is nearly impossible to know if you’re getting a good product. Apps may have great visual design, but in some cases it is just a pretty face. So how do you pick a developer that is going to produce a quality product that is stable, maintainable, and works well. Many projects get passed from developer to developer, so having good quality code to begin with, the app will have a higher change that it can continue without being completely rewritten.

I’ve written software as a contractor for many years and like to think that I know what I’m doing, so here are some tips and questions to ask that may help companies hire a quality developer.

  • Does the developer rely heavily on open source? Open source itself isn’t inherently a problem, but should be used sparingly for specific purposes and should be easily removed at a later time if need be. Building an entire application on an open source framework makes things needlessly complicated and fragile.
  • How long has the developer been writing Objective-C software (Mac or iOS)? Experience says a lot about how easily the code can be maintained in the future.
  • What do the applications that the developer has developed look like? Take a look at the App Store and see how complicated the apps are and how well they work?
  • Ask for references. Ask why the developer is no longer doing work for the references. There are a number of ways to say “we got fired”, so be on the lookout for those. If the app is no longer being developed, the company ran out of money, or the developer no longer has time are probably the best reasons; anything else might be suspect.
  • Does the developer use source control? This is a pretty basic requirement. If a developer doesn’t use source control for his/her own projects, that would worry me. There are many sites that offer free or cheap source control, so there is no excuse for avoiding it.
  • Does the developer use code analysis tools such as CLANG? It’s built into Xcode and there is no excuse for avoiding it.
  • Does the developer allow warnings when building the project? Compiler warnings should be avoided at all costs.
  • Can the developer provide code samples for review? In particular, an app that can be built using the Apple Developer Tools. This is important as some developers have a huge list of tasks to get a project built. A project should be delivered such that you can unzip the archive and build the project. I’ve seen projects delivered that have a list of steps to build including checking out code from open source repositories. This is extremely problematic and error prone as the repositories could change by the time the app is delivered.
  • Ask the developer what is the right way to determine if a feature is available on a particular device. Today I saw code that checked the OS version to determine if Retina display graphics should be used. This is completely wrong because for example, iOS 4 runs on devices that don’t have Retina displays. (Also the code that checked the OS version didn’t properly check the version.) Apple has identified ways to determine if a particular function should be used or a feature is available.

These questions are probably hard for non-developers to ask and know if the answers are legit, so it might be worth spending a few bucks to find an expert, such as me, that can spare a few hours to evaluate a developer, but doesn’t have time to actually do the project.

An exercise in frustration

When I was training for the 2 marathons I ran, I listened to audiobooks to pass the time as training runs could last for hours (it takes awhile to run 20+ miles on the long runs). I bought a number of books from Audible.com. Once I stopped training, I couldn’t justify the monthly cost for audible, so I switched to listening to podcasts on my runs. The other day, my dad showed me how he checked out an audio book from the library to listen on his iPod Touch. It looked promising, so when I got home, I went to the San Diego Public Library Web site and browsed to the eCollections link. I found a book that said it could be played on the iPod, so I checked it out and installed the OverDrive software on my iPhone.

Safari.png

Unfortunately that’s where the easy part ended. After a bunch of frustrating tries and re-reading the help information, I realized that the OverDrive software only played MP3 files. Well, I can use iTunes on my iPhone to do that, so what good was the software? There is a button on there labeled “Add Website” which implies it would make it easier to download directly on the device. I tapped on it and it launched Safari on the iPhone. Lovely. After more searching and reading reviews about the software, I came to the conclusion that the software was almost useless. I would have expected that I could enter my library card number and PIN, browse for books on the device and listen to any available audiobook. That’s not what happens; the OverDrive folks didn’t implement a WMA player that handles the DRM used on the books, so it would only play unprotected MP3 files.

I almost gave up on the concept of listening to checked out audiobooks on my iPod that I use for running or iPhone when I decided to install the OverDrive software in Windows 7 in VMWare (remember I’m a Mac user). The software offers an option to transfer the audiobook to an iPod. Hmmm…my iPod is Mac formatted and the documentation said it had to be Windows formatted. I didn’t want to do this and dug into my box of cables and stuff and found an old iPod Nano. I plugged it in, grabbed iTunes for Windows, reformatted the iPod and started the process to transfer the audiobooks to the iPod.

I’m not going to get into the nitty gritty of what is going on, but using the software in the manner it was intended, I was able to transfer unprotected audiobooks to my iPod and iPhone. Wow, this is a huge hole that isn’t the same as the analog hole. Either this is a significant oversight or a deliberate choice that the audiobook publishers have decided to accept.

The process of checking out these audiobooks was quite painful despite reading all the FAQs and me being a software engineer. My dad figured it out much faster than I did, so maybe I over analyzed it or my dad wasn’t as discriminating in his choice of books. Our library offers 100 audiobooks in MP3 format which I could have used with much less frustration while it offers 1784 books in WMA format (most of it protected so that it expires after the lending period). I’m not sure how OverDrive has convinced over 13,000 libraries to adopt their system, but the system is almost unusable.

Has anyone found the process of checking out audiobooks easy? It’s almost worth buying them from Audible.com to avoid the dealing with this.