Saturday, March 13, 2010
What happened to Simplify Media for iPhone?
Tuesday, January 19, 2010
ooTunes Radio is part of Indie+Relief for Haiti
Saturday, December 5, 2009
Apple Lala and what it means to me (and ooTunes)
Here's part of his response:
I'll bite on your interest in being a part of lala, but here are my concerns;
1. It's really expensive to live in the Bay Area. You've got a family including a young daughter. Have you considered the lifestyle implications.
2. The ootunes demo is pretty slow and buggy. What's with that?
(mind you this was back in May of '08 shortly after I launched the ooTunes server).
So what did I do? (Well I actually had 3 kids, and now a 4th on the way, something that certainly would have been tough)
I thought it was awesome I got that response from him, with a valuable bit of feedback. I took a hard look at how long it took to login/use the demo (and found some severe IE bugs), and a bunch of unnecessary network calls that were too slow for services like mp3tunes (and even at the time, to lala.com itself, more on that later) and fixed them asap. (FWIW, I just timed full load of lala.com vs. full login/load of demo.ootunes.com and the winner was... ooTunes, by 2 seconds, but that's neither here nor there ;)
So I'm thrilled that something I instantly loved and knew would succeed was bought by "the who's who" in this field.
I'm excited for what it *might* bring to Apple (streaming, subscription services, free preview listens?).
I'm exceptionally happy for those guys who worked so hard to make it happen. They're very talented and deserve a big payoff.
And, I'm terrified of what it means for ooTunes (not just the server, but the radio playing iPhone app, at least in the short term). However not for the reasons some people may think... let me explain:
Monday, June 15, 2009
ooTunes milestones...
first off, ooTunes has been #1 in paid music apps in Canada for going on almost a week now :) I guess that's what I get for adding almost 800 Canadian streams for you iPhone / iPod Touch brandishing Canucks :) I was told also that at least for the first 8 reviews, I had an average rating of 5 stars!
Second, I've been getting station requests like crazy! As of today, I added the 10,000th stream to the full list of all ooTunes Radio stations here.
Third, the ooTunes server has been recently updated with beta support for sharing your photos. On Mac, assuming you use iPhoto for your photo management, you get albums, ratings, tags, titles, etc. On windows and linux, for now it's only going to scan directories for photos. The feature is off by default, be sure to turn it on in the Global preferences for ooTunes Server if you want to give it a try, and let me know what you think!
Fourth, I'm currently working to finalize the realtime video transcoding that iPhone OS 3.0 can take advantage of. The cool thing about this is it should eventually allow not only playback of videos in non-iPhone compatible formats or sizes, but also eventually live video (as in, from a TV tuner card, webcam, or even some live online video streams).
Finally, later this week, as part of the release for the new iPhone 3G S, my family and I will be taking a little ooTunes promotional trip, it's fully experimental, but I'm really excited about it. I'll post a followup on how it goes here, someday...
Thanks for reading :)
Steve
ooTunes Nerd
Monday, May 4, 2009
Crash logs for iPhone app developers!
When I logged in to iTunes connect this morning, I noticed a message about being able to get crash logs for my application(s)! This is absolutely wonderful! Before you had to either rely on a debug log or a user manually finding and emailing you the crash log(s) when they happened, which was a bit annoying...
Here's a bit more info on the iPhone app crash logs on TUAW.
Users are prompted to upload the logs when they sync with iTunes and now we finally get to see them as developers!
I think apple should provide a new category of apps: Top 20 most/lease crashy apps or something like that... though I'd hate to find myself on that hall of shame :(
Of course since ooTunes Radio 2.0 came out, there's far far fewer crashes... I hope they posted all the crash logs so I can actually statistically see that (or not...).
Anway, thanks Apple, and I'm still waiting for the email about ooTunes 2.0 being accepted and available ;)
Sunday, May 3, 2009
ooTunes Radio iPhone Review
So, since it's been out for almost 3 months now, and the Outstanding 2.0 update has been out for a week now, and I've even TRIED to get someone to review it this time... (to be fair, there are a few people who say a review is in the works :/), I've decided to capitalize on the google search traffic that apparently has nowhere to go until SOMEONE posts a real review... so here is my totally unbiased review of ooTunes Radio 2.0.
It's AWESOME, especially when you look at where it came from. 4 months ago, I'd never written a single application in Objective-C (the programming language most used for developing iPhone apps). I wrote it in my spare time (such a thing used to exist for me I think). I did it ENTIRELY without using a real iPhone (I have an iPod touch thanks to both the most expensive Christmas present I've ever received, as well as the longest lasting). In fact, I did it almost entirely without using the iPhone OS Simulator since about a month into development, it just stopped working on my computer... go figure :(
So, keeping that in mind, the first released version was far from perfect... the start was even more rocky when I found out about 2 hours before the app was accepted for sale, that I'd have to remove one of the cool features! (Note to others with no business experience... get something in writing BEFORE you decide to use a 3rd party's services...)
Also, many of the reviewers were angry because they had assumed that the ooTunes Server was included in the $4 iPhone purchase... so beyond bugs, it also had a bunch of negative reviews in iTunes for that... I quickly changed the description to use ALL CAPS and ******'s galore to make it so any rational individual who glanced at the description should grasp the features that required the server and those that didn't.
So, I realized that I'd catered a bit to those who were willing and able to buy and run the ooTunes Media Server and left some of the features of the plain old iPhone app lacking... so with version 2.0, I concentrated on making the app the absolute best radio player in the store... and it turned out, even better than I could have hoped! I knew as I was finishing up beta testing that this version was going to go somewhere (the earlier versions had a couple of short stint's on the top 20 music apps, but nothing lasting...)
So here we are, ooTunes Radio 2.0 is NOT the last word, by any means. I have a huge list of additional features to add, improvements, customizations to settings additional audio formats, etc. I'll be working more on the next update as early as this coming week, as long as I can get to it between providing the VERY BEST customer support anyone could ask for, and taking my son on an outing to celebrate him not peeing the bed for 3 consecutive nights! (You rock Herbie!).
So, was this really a review? No. But it was long, and it was pretty positive, so I'll rate this post 3 stars (out of 5).
And if you happen upon this while searching for a review of ooTunes Radio, why don't you tell someone at a REAL website that you'd be interested in seeing a review, I'd assume there are other people who listen to user's feedback :)
P.S. Buy ooTunes..
Wednesday, March 18, 2009
Live Video Streaming on iPhone 3.0!
That's all, can't say more since it's still under NDA.
Wednesday, March 11, 2009
App store reviews now separated by version!
Apple really does seem to be listening to developer feedback. One of the annoying things for developers and reviews of their apps is that they are cumulative for all versions of the app, so if someone has a rough start, it's hard to shake the early reviews. Well, now in the reviews, they've added "Average for all versions" as well as (presumably) average for the current version! This will of course also mean that it works the other way, if for some reason your app blows up after the second update (after having lots of great feedback) then would-be buyers will also see that the the current version maybe isn't as good as it used to be. It doesn't go as far as letting developers actually RESPOND to the feedback, but it certainly is a step in the right direction. Here's a couple of images from my own app's page.


Also of note, it appears that they now show the total number of ratings, not just those with actual textual reviews. Though I still think they should separate the non-text reviews from the averages since they are highly biased downward by asking for a rating when an app is deleted :(
Note, I haven't yet upgraded to iTunes 8.1 yet so this is a feature for everyone, not just the newly upgraded.
I hope they also made the dang thing load a bit faster (and cache old pages a bit less) but I won't hold my breath since those are typically mutually exclusive demands.
Oooh, it also has a last modified date by all the reviews, I like it!
One more request (since I'm pretty sure steve jobs read this blog): LET DEVELOPERS SEE THE INTERNATIONAL REVIEWS FOR THEIR APP please, instead of having to resort to some crazy screenscraping hack which is undoubtably slowing the store down for everyone else...
Friday, March 6, 2009
Blogs... where people go to complain...
Here's what I'd post as my own feedback. It was fun to write:
My goodness gracious! Hi, this is Oogli. I don't exist as a real person. But really, I would be a nice guy if I did!
Okay, I've spent the last 2 years of my life, in every waking moment working to make this app and the server a reality. Some may call me an idiot, great. Please do it to my face (see the "ooTunes Radio Support" link). I cannot honestly believe the number of people who are still "surprised" that the ooTunes server costs extra money! I can't believe it (unless you bought my app on day 1) there are two places in this long (poorly written) description that have stated in no unclear terms (sold separately see: http://ootunes.com)
I don't understand why people are able to read all about all the features (many of which require using a server, not because I'm trying to get rich from it, but because they are TECHNICALLY IMPOSSIBLE TO DO without having a server running on YOUR computer) but FAIL to see the SOLD SEPARATELY text??? I'm not trying to rip people off!!!! I want everyone to be happy, I want to keep working to make my software perfect, I want to live a long(ish) and happy, not-overly-stressful life. However, I'm finding that it is quite difficult given the circumstances:
- I can't advertise my Server software here more than I already am, this is Apple's store, they don't get anything from people purchasing my server software, this is not an advertisement.
- I can't respond to people here. Please contact me!!!! (see the "ooTunes Radio Support" link) I answer every email I get! I want to help you!!! I want you to tell me why I'm a fool, then you can tell the rest of the world.
- If you feel as though you were ripped off, tell me to my face (or by electronic mail, rather)! I'll make it right!
- Please check your facts before you post reviews. I've heard several people tell me that "all these streams are available elsewhere for free". Please tell me (and any potential customers where, so we can move on with our lives!), or that the web-browser is only available with the server? It's not. Try again, or ask me how to use it.
- If you have trouble with the software, it's my fault. Please tell me so I can improve it. I'm listening, and working hard on it. See the "ooTunes Radio Support" link.
- If you like my software, thanks! I sincerely appreciate your business. I'd still love to hear what I can do to improve it! (then you can tell the world)
- That feels better...
Wednesday, March 4, 2009
A bug report for the app store review process
Horrible subjectivity, inconsistency and unpredictability of app store review process.
Steps to Reproduce:
-(BOOL) willAppleDoTheRightThingForDevelopers{
App *myapp = [App appWithMuchHardWorkAndLateNights];
while ([[Users of:myapp] count]){
do {
[myapp submitForReview];
sleep(rand()*1000+FIVE_DAYS);
if ([Reviewer feelslikeapproving:myapp] && ![Reviewer insteadOfReviewingUpdatesChoosesToRejectForSomethingPrevious2ReviewersMissed] ) return YES;
[I WTF];
[I cantFindReferencedAttachment];
[I respondToRejection];
[I hearNothingBack];
[I didntInfringeTrademark];
[I haveNoRecourse];
[I curseApple];
[I prayAndroidSucceedsImmensely];
[I franticallyMakeChangesAndResubmitSoMyUsersWillStillRespectMe];
}
} while ([I amSane]);
}
return NO;
}
Expected Results:
YES
Actual Results:
?
Regression:
Notes:
While the tone of this is somewhat sardonic, the realities of the frustration are 100% accurate.
Suggested improvements:
Some sort of estimated time til review (there has to be an internal queue for reviews why can't we see something giving us a rough estimate that becomes more accurate as it gets closer to review?)
A more thorough review upon first submission, so that future updates can focus on what's new, not digging up old skeletons.
If old skeletons must be brought into the matter, why not also review the actual update so fixing the first won't result in a second rejection when the new features are actually reviewed?
Since it's expected that a review can't possibly be 100% thorough for all apps, give developers a "warning" for something that's already been accepted but shouldn't have been, by saying "fix this by the next submission (if the issue is NOT serious... which in most cases it wouldn't be or it would have been found in the first n reviews!
Some means of quick turnaround with questions on clarifications from the review. I honestly got a review that said "see attached image" with no attachment! I responded asking for the attachment and still haven't heard back. In fact, I have never heard back from anyone about any requests for clarification I've made. Going on weeks now!
Provide a more concrete set of review guidelines. It was very frustrating to have an app rejected for using the word "demo" on a button, when nowhere do the guidelines state this, and the only place I could find information on it was on ars technica!
While I'm going, how about a way to respond to reviews, or more encouragement for people to contact the developers before leaving a damning review.
That's all for now, if there's a better venue for this, please let me (and all the other developers) know!
Saturday, November 15, 2008
Performance improvements...
One of the reasons that I originally wrote ooTunes was because I was very put off with the poor performance of other alternatives. I tried DOT.Tunes (it was using 10% of my cpu all the time, and resyncing with my iTunes library took minutes). I tried slimserver and found that in order to keep the slimserver database in sync with my iTunes library I had to run a 1 hour long sync. I chose to do this during the night, since it bogged down my computer and made playing music from the library skip and buffer. I spent a lot of time tacking on additional functionality (like marking songs played when I played them, etc.) but it was obnoxious not to be able to see changes to a playlist for as much as 24 hours. So, ooTunes was born. I spent a lot of time writing and optimizing the code that reads the iTunes library. It now is parsed in under 5 seconds, without freezing up my computer, and that's on a library with 14,000 tracks! This means, what you see through ooTunes is basically what you have in your iTunes library. If it isn't, reload the page, and it will be.
Well, I spent several of the last few days further increasing the pageload speed. I found that a lot of the time when refreshing the page (usually re-reading the iTunes library is the biggest part of that, though it only re-reads it if there have been changes since the last read), was spent reading online playlist from mp3tunes and pandora. Many people don't use these so they wouldn't be seeing the slowdown, but for me, it was taking an extra few seconds each time I reloaded. So I made changes to do a better job caching those as well. (the demo will now load about twice as fast as it used to, on a fresh login!)
The other area that I've spent (probably too much) time optimizing in the last few days is the load speed on the iPhone or iPod touch. I found it a bit frustrating on my large library (granted, I also have a not-yet-released feature of my photo library being loaded, which is something like 2000 more playlists to render) but I still thought it could use some speedup. So I've reduced the image sizes using some cool compression tools that compress images losslessly, and more importantly, I ditched the dependency on Scriptaculous/prototype on the iPhone! I seriously regret ever having started using Scriptaculous, it brings in something like 60kb (compressed) of javascript libraries for a few tasks (mostly the drag and drop of songs on playlists, etc. in the regular browser)... and there's no fine grained modularity (no way to say, I only want this feature, give me the bare minimum javascript library!) So, the iPhone interface now loads in about half as much time as it used to (at least on my own library). There is still a lot of room for improvement, but I'm pleased with the progress that's been made.
I also made some needed changes to the interface on the iPhone. No longer do you have to tap 10 times to get a song to play (it's still more than anyone would like but I've reduced it as much as I can, tapping a song once now loads the song and one more time on the quicktime play button and it should begin playing). Radio stations and movies are even better. One tap and they are playing! (the reason is that they don't do back to back playlists so they don't require the little play button to be pushed). I wish apple would give us some REAL javascript controls for the embedded quicktime player, but it doesn't seem to be top on their priorities. However, it's much better now that I fixed my own problems.
Now if only I could have made more progress on MooTunes. It's coming along but my love for "speed optimizing" just overwhelmed my love of making tons of money!
Also, please send me your suggestions and requests for improvements! I would have probably never made some of these changes if someone wouldn't have spoken out about it!
Tuesday, November 11, 2008
App store rejects... it's time for change!
It seems that if enough registered developers signed a reasonably written, petition (and had some of the major developers of major indy apps) sign on, they may be able to be heard. My guess is that those with a lot of success are scared to "bite the hand that feeds them" but the uncertainly is extremely demoralizing to a developer. I'm not going to stop developing because of the fear, but it does certainly make me want to hedge my bets and not "risk everything" on the hopes that my apps get accepted into the store. True innovation, however probably does require more of the "risk everything" attitude. It may simply take getting some exposure on the front of a few of the apple news sites, and a few big developers in an "open letter" to bring about some change. Does the NDA override our right to unite and beg for some clearer groundrules? Is there any reason the SDK can't include the same tests that Apple themselves are using to vet applications (if such things truly exist? Things are appearing more subjective these days... and admittedly some have to be judgement calls, but something like bandwidth usage is easily implemented in a test suite).
Wednesday, October 22, 2008
ooTunes, internet radio, last.fm, and airtunes
at the beginning of the track in ooTunes), then click the "Play in iTunes" link which will download a .pls playlist which can be opened in iTunes to play that stream!Tuesday, October 21, 2008
Some bugs fixed...
Create Genius Playlists in iTunes on the go using ooTunes ... thank you Applescript
- This is currently only working in a regular browser (not on the iPhone yet).
- This only works on Mac's (sorry PC, you've had a rough couple of years, I know).
- This only works on Mac's when you turn on "User interface scripting" also known as "Support for Assistive Devices"...
- It requires iTunes to be brought to the front and may even have message boxes popup in iTunes on your ooTunes server computer.
- It may not work on non-english versions of iTunes.
- You have to already have the track in your iTunes library, and "Genius" has to be updated since that track was added.
(*
(C) Steven Woolley 2008, as part of ooTunes Media Server (see ootunes.com)
How to create an Genius Playlist in iTunes using applescript. More info and issues discussed here:
http://ootunes.blogspot.com/2008/10/create-genius-playlists-in-itunes-on-go.html
Feel free to use this code however you'd like, but please keep this comment intact so I hear feedback, etc., since I'd like to hear about updates, improvements, suggestions, etc.
*)
set pid to "4B62C662B53FFB94" -- set this to your track's persistent id... or use some other method to get your "seed" track
set app_name to "iTunes"
tell application "iTunes"
try
with timeout of 10 seconds -- don't want to hang forever if, for instance, iTunes has a dialog box already open
set cur_track to (first track of playlist named "Music" whose persistent ID is pid)
reveal cur_track
end timeout
on error theError
return "Can't find track!"
end try
end tell
tell application "System Events"
tell process app_name -- this needs Assistive Devices support enabled see: System Preferences -> Universal Access -> "Enable access for assistive devices"
try
set b to first button of window app_name whose help is "Start Genius." -- that's about the only way to get the "Start Genius" button, but it will break on non-english versions (I'm guessing)
tell application "iTunes"
activate
end tell
click b
with timeout of 1 second -- this is a hack to "test" if the "can't create genius playlist..." dialog opened. If it does, we'll timeout (hopefully) and then close the dialog so it doesn't freeze future applescript interaction
tell application "iTunes"
activate
end tell
end timeout
return ""
on error theError
if theError is "iTunes got an error: AppleEvent timed out." then
key code 36 -- close the dialog
return "Can't create genius list from that track!"
end if
return theError
end try
end tell
return "Error creating genius playlist!"
end tell
Friday, October 10, 2008
Why you can not play live video on the iPhone
- There is nothing built in to the iPhone to handle true rtsp streaming
- The only formats available to be played on the built in video player are .mov, x264 or mpeg4 all of which require a frame index in the moov atom at the beginning in order to be played as they're downloaded. Unfortunately, for a live stream such information is simply not available until the encoding is finished.
- Should you desire to build your own video player, the SDK doesn't give access to the private frameworks that apple uses for video decoding or the raw framebuffer that a player would need to have fast display. There are workarounds (that are suboptimal) but no one can show source thanks to the developer NDA that is still in effect. (technically this comment is probably out of line, though I've gleaned it from reading/searching the web, NOT from the sdk).
- Without proper hardware optimized methods, you're going to be a battery hog, and probably limited in resolution.
- Now, imagining that all of the above is somehow overcome (which I am sure it has been by some)... now the question is: "Will apple accept your app into the store?" It is against the terms of most (if not all) service provider's agreements to stream live anything (and video isn't going to be low bandwidth).
- Figure out a way to encode live video with predictable metadata (fixed frame boundaries and packet sizes)
- Write your own video player from scratch to decode whatever type of stream you want (remember 3, 4 and 5 above)
- File feature enhancements and otherwise petition Apple in hopes that they'll add support for RTSP or change their SDK to allow for this.
- Encode in short snippets and try to play them back to back seamlessly, with no breaks... this way you almost have live video (delayed by the amount of time to encode and start playing a single snippet).
- Give up on it?
Wednesday, October 1, 2008
Woohoo! Apple finally drops NDA on iPhone development!
Thursday, September 18, 2008
hallelujah!
- It forced me to finally get Real Audio streams to work
- It made me realize I really need a way to add streams directly from ooTunes (it's about half implemented already)
- I can FINALLY get back to listening to my own music and streams (instead of having to listen to conservative talk shows, sports shows, religious shows, and boring political news)
Tuesday, September 9, 2008
Are Genius playlists the beginning of the end for last.fm and Pandora?
iTunes' new Genius playlists are, well, genius! With one of the most installed and (more importantly) most used music players apple would be foolish to NOT get users' play data and
- use it to make their offerings better and
- use it to PROFIT!
So my initial impressions:
It is a bit scary signing up... anonymous, but... um, yeah, give us your iTunes Store account name and password... but it's anonymous, we promise! Did we mention how anonymous it is? Well it is totally anonymous!
I'm not a "privacy" nut. I recycled my tinfoil hat for some quick cash. If I was, I wouldn't be blogging, or scrobbing with last.fm, etc. I understand why they need the "privacy policy" and your account info (in fact, I actually read the privacy policy associated with enabling Genius in its entirety... it's actually short and sweet). It's not a super big deal, and I applaud apple's upfrontness about it.
Okay, one hurdle down. Next iTunes spent an hour or more reading my library and playcounts, dates, ratings, etc (it was probably closer to an hour and a half, but I have something like 14,000 tracks so your ymmv). Then, after telling me it had been submitted, I was informed that Apple was
processing the data. A few minutes later: Success!
"You can start pestering the Genius!" <-- this is NOT what it said, I forgot...
So, I tried it out, and it did a pretty good job, at least on the first few attempts, at least with the non-obscure stuff.
Biggest rightside downside?

The Giant Genius sidebar... of course. If you're like me, you may just want to hide that Genius sidebar right off the bat. I refuse to buy tracks from the iTunes library before looking around to see if I can buy the real physical cd online for less. I like tangibles, and don't mind the wait for delivery and ripping, but I'm probably in the minority there, given the success of the iTunes music store and certain less legitimate
means... Of course the sidebar might be good for recommendations even if you don't buy from iTunes, so I'll look into it eventually I'm sure.
(NOTE, I do applaud that it recognized probably the only major Johnny Cash album that I don't (yet) own, and didn't try to re-sell me all the stuff I already bought... that is smart use of info... something that last.fm and pandora really CAN'T do, at least not very well).
So, is this really the end for last.fm and pandora? Not really... Until Apple/iTunes will let you actually play stuff (more than 30 seconds) from songs you don't yet own, they can't compete with the music discovery aspect of those guys... but if I were an investor in last.fm/pandora, I'd be a bit scared (given the licensing costs we've heard about...) and now this encroaching by Apple. But, oh well, I'm pleased with apple's move, and competition is a good thing, right? Right?
And the best part of it all? ooTunes didn't break with the update to iTunes 8.0! In fact, genius playlists just show right up (both in a regular browser or in the iPhone). The only problem is that it doesn't use a neat new icon for Genius lists (kinda gonna be hard to come up with an icon more genius than nerdlinger,

but I guess we can give him a pocket protector or einstein hair or something. Look for an update soon that fixes that minor issue, and HOPEFULLY a way to create a genius list on the fly, through ooTunes, using not only iTunes tracks, but maybe even pandora, last.fm, seeqpod, or other tracks (no promises on this, but if it's possible, I'll do it!).