Yearly Archives: 2009

Clipstart 1.2.4

Clipstart 1.2.4 is done! It’s a minor bug fix update but includes dozens of small improvements (and some not so small, if you’re measuring not with new UI but in number of lines of code changed). I’m very happy with this release and excited to move on to some other new features in the works for 1.3 and beyond. “Download and more info”:http://www.riverfold.com/software/clipstart/.

And because I don’t have anything else of substance related to Clipstart to talk about yet, I’ll leave you with “this Buzz Andersen quote”:http://log.scifihifi.com/post/159881723/the-twitter-app-to-use-on-android-im-told-is about quality:

“Shipping quality is a longer, tougher road than just shipping whatever to be first to market, and its benefits tend to be realized more slowly, but if you want users to love your software as a brand, and not merely use it as a commodity, it’s the only way.”

I’m not there yet, but yeah, well said.

Indie payment processing

This story about “PayPal screwing over a Mac indie business”:http://blog.apparentsoft.com/business/124/is-paypal-good-for-your-microisv-business-a-short-paypal-horror-story/ should be a real concern to anyone relying on PayPal. These kind of things come up from time to time, often with frozen accounts because too much money was suddenly flowing into or out of an account, but I’ve always stuck with PayPal because they have low rates and I haven’t run into any problems. There’s nothing fancy about the way I sell “my products”:http://www.riverfold.com/, but it works, and I hate to change things that aren’t broken.

As a user, I’ve gone from avoiding PayPal to preferring it. I’m less likely to use a credit card with online shops that I’ve never heard of before (although more because of the hassle of entering all my information than for any security concerns). It’s also convenient for me to have small expenses like hosting and software purchases all in one place under my PayPal account.

But it’s time to get serious about this, so I’ve decided to use “FastSpring”:http://www.fastspring.com/ as a backup. I like FastSpring’s admin interface, testing mode, templates, and focus on customer support. I’m impressed with the “Atebits custom store”:https://sites.fastspring.com/atebits/instant/tweetie-mac hosted on FastSpring, and the “reasons Justin Williams chose for switching”:http://carpeaqua.com/2009/11/09/why-i-chose-fastspring/. The fees are a little high for everyday use (8.9% vs. PayPal’s 3.9%), but it’s perfect as a secondary payment processor, waiting for me to flip the switch if anything goes wrong with my PayPal account.

Healthcare fallback plan

In the software world, the best strategy is to ship early and often. Get something out there that solves a real problem, then fill in the missing pieces and continue to improve it. Iterate. In politics, though, we often only have one chance in years or decades to get it right.

The healthcare bill passed the Senate and is on its way to becoming real, even if it’s a shadow of what it could have been. We should be thankful that we got anything — the changes do matter — but at the same time I can’t help thinking it was a missed opportunity.

Who’s to blame? I wish Democrats had fought harder; I wish they’d framed the debate correctly from the start. I still like George Lakoff’s focus on calling the public option the American Plan, but I also like John Neffinger’s point that maybe the real mistake was in not starting with a single-payer plan so that the public option would look like a moderate compromise. It feels like many Democrats were resigned to failure early on.

In an unrelated tweet a few weeks ago, from comic artist Kazu Kibuishi: “If you have a fallback, you will fall back.” My failures reflect that too. To shoot for greatness you have to put everything you’ve got into your first effort.

I keep coming back to something Hillary Clinton said in a debate with Obama early in the Democratic primaries of 2008. It struck me as so true at the time that I wrote it down:

If you do not have a plan that starts out attempting to achieve universal healthcare, you will be nibbled to death.

And that’s what happened.

iPhone giveaway wrap-up

I was reminded by “Nick Bonatsakis on Twitter”:http://twitter.com/nickbonas that I never wrote about how giving away the iPhone worked out. The short answer is: pretty well! The longer answer follows.

I’ve conducted 3 giveaways for Riverfold Software now:

  • Nintendo Wii, back when they were in short supply. You could enter by sending a message to “@wii”:http://twitter.com/wii or by entering your email address and sharing the link with a friend.

  • iPhone 3GS, plus year of Vimeo Plus and Flickr Pro. That’s what I’ll talk about below.

  • New Super Mario Bros Wii game. Probably the simplest giveaway, all I asked is that you give me your email address and optionally sign up for my newsletter.

In all cases I had two goals: do something fun for potential customers, and give the press an excuse to write about my products. By that metric all the giveaways were successful.

I noticed when originally giving away the Wii that most of the entries were Windows users — people who couldn’t even use my application! So for the iPhone giveaway I made a change: you could only enter by downloading the app and choosing a special menu item, which loaded a simple webview with the entry form. Pretty straightforward, and no complaints. The total number of entries was lower, but they were targeted to existing or potential customers.

In additional to sending news about the giveaway to a few contacts who I hoped would pick up the story, I also wrote a formal press release for it, which “went out through prMac”:http://prmac.com/release-id-6861.htm. This is so inexpensive that it’s hard to find fault with it, but I think the main outcome was getting contacted for advertising on sites that I had never heard of before.

Another thing to remember is to set up a “system to track referrers”:http://www.manton.org/2008/09/tracking_sales_referrers.html through to sales, so that you can judge the effectiveness of these giveaway-style marketing efforts. I could tell right away that it paid for itself, but it wasn’t a significant bump in overall weekly stats. I do believe it helps long-term though.

The final part I took pride in was shipping quickly. Growing up we all had the wind knocked out of our sails by the “allow 6-8 weeks for delivery” fine print on cereal box prizes or other mail-in gimmicks. If nothing else, I made an effort to ship the next day if possible, and I paid for express shipping.

Giving away stuff is fun. Until I get sued for not following some obscure rule on contests because I didn’t hire a lawyer, I’ll plan for more giveaways in 2010.

Clipstart duplicates

Clipstart 1.0 tried to be smart about not importing videos that were already in your library, but it stopped short of actually giving you much control over whether to import duplicates or ignore them. I also felt like the window showing duplicates could be improved to provide more information about each file. At a glance you should be able to tell if Clipstart is doing the right thing.

So I put a lot of effort into this for the soon-to-be-released Clipstart 1.2.4, and the result is this window:

Duplicates dialog

It generates a few frames of the timeline for each video (both old and new file side by side), which turns out to be an excellent way to confirm that they are indeed the same file, and also shows the original filename even after Clipstart (or the user) has renamed it. Now I can scan through the window in about 2 seconds and I’m done. Contrast with iPhoto which prompts after each video is imported, instead of at the end of the batch, and if you blindly trust it by checking “Apply to all duplicates” then you have no feedback on whether you made the right choice.

The new duplicates window works with both volume-based cameras like the Flip and SD cards, as well as USB devices such as the iPhone 3GS and iPod Nano. I hope to ship version 1.2.4 soon, and there’s a “beta in the forums”:http://www.riverfold.com/forums/topic.php?id=49.

Update: As pointed out by a customer, Ignore and Keep are actually pretty confusing verbs here. I’ve changed it to “Skip Duplicates” and “Import Duplicates” for the final release.

The Princess and the Frog

Walt’s nephew “Roy Disney died this week”:http://www.cnn.com/2009/SHOWBIZ/12/16/roy.disney.obit/index.html. In 2003 I blogged about “Roy leaving the company”:http://www.manton.org/2003/12/roy_leaves.html. I said:

“It’s a shame that Roy is the one to leave. It’s clear that Disney (the company) has lost its way, and Eisner has no vision for what the company could be.”

Luckily for us, since that time a lot has changed, and the animation division does have leadership in John Lasseter. One of the most visible changes just opened in theaters last weekend: The Princess and the Frog. I’ve seen every theatrical release out of Disney feature animation since I could afford the few bucks to go to a theater, so I wasn’t likely to miss this return of 2d animation.

My daughters and I really loved this movie, not just because of my love for hand-drawn animation, but for a story that works and characters that are rooted in something real — singing Cajun fireflies and voodoo magic aside, of course. There are some really touching scenes here. “Sandro Cleuzo says”:http://inspectorcleuzo.blogspot.com/2009/12/milt-kahl-day-12.html the animation was rushed, but I think they did a heck of a job.

The credits are almost as if nothing has changed — Eric Goldberg, Andreas Deja, Mark Henn, Nik Ranieri. “The reality is slightly different”:http://www.dreamonsillydreamer.com/, but there’s a mix of new animators among the familiar names. A lot is riding on the success of this film, and it managed a respectable $25 million over the weekend.

Great job, Disney. I’m glad Roy got to see the beginning of the next 2d comeback.

Decentralization and no-SQL

I’ve been meaning to link to this since it was posted earlier in the year. “Jens Alfke hopes”:http://mooseyard.com/Jens/2009/02/what-will-web-30-be/ for a decentralized future Web 3.0:

“Centralization creates concentrations of power, and that’s dangerous. The people who run the servers have total control over your (and everyone’s) data. They can snoop at it (however private it’s supposed to be), they can sell it to advertisers, they can accidentally lose it, they can accidentally expose it to hackers.”

I agree. Even for the best-loved centralized companies, like Twitter and Flickr, I want a copy of my data. If the first set of desktop tools to interface with web services were all about sharing and publishing, the next software generation will need to also effortlessly download and backup that data. Even usually careful programmers “sometimes get it wrong”:http://news.ycombinator.com/item?id=990323.

Jens goes on to talk about CouchDB, including a link to “this intro book”:http://books.couchdb.org/relax/. Looks good. Couch and “other no-SQL database systems”:http://nosql-database.org/ like Mongo are interesting technologies that I’d probably come up with an excuse to use if MySQL wasn’t such a workhorse already. Related, for the Ruby fans in the audience: “Phil Burrows on logging with Mongo”:http://blog.philburrows.com/articles/2009/09/28/rails-logging-with-mongodb/.

Worthless apps

I like “this article on Mobile Orchard about the relationship between price and ratings”:http://www.mobileorchard.com/app-store-heresies-higher-price-better-ratings-dont-discount-your-app-at-launch/:

“Customers with some skin in the game carry a psychological pressure to feel that they’ve been wise in their purchases; they’ll tend to over emphasize their positive feelings.”

This makes sense to me, and the other side of pricing that’s so important is the message you send. The perceived value of a product is connected to the published price. This is especially true in the App Store, where there’s no way to try the software before purchasing it. The price sets expectations.

So to take the Mobile Orchard analysis a little further: no one feels guilty judging a free app harshly with a 1-star rating because even the developer thinks the app is literally worthless.

Sure, there are good reasons to have a free app. To complement another paid service or desktop app, as a demo for a game or full version, or to “make $125,000/month in ad revenue”:http://fingergaming.com/2009/12/02/paper-toss-developer-earns-125000-in-monthly-ad-revenue/. In fact half the ideas I had for iPhone apps would have been free. But I don’t think any of that changes the truth of what Mobile Orchard said, that free stuff isn’t respected as much as something the customer is personally invested in.

New blog design

I’ve been blogging here since 2002, and I started Riverfold in 2006, but it’s taken me a while to realize something pretty obvious: traffic flows back and forth between my personal blog and the company site, and I should stop fighting it. Today I’m embracing that in a small way by adapting the “riverfold.com”:http://www.riverfold.com/ design to this blog, and linking more prominently to my indie products.

I’ll still post about things that have nothing to do with software. I don’t want to give that up, and some of my favorite posts wouldn’t exist if I stuck to programming or business topics. Some non-software favorites I found while surfing “the archives”:http://www.manton.org/archives.html include “Ollie Johnston died”:http://www.manton.org/2008/04/ollie_johnston.html, “Perfection”:http://www.manton.org/2005/08/perfection.html, “The Great Scott”:http://www.manton.org/2005/02/the_great_scott.html, “Bush veto”:http://www.manton.org/2007/11/bush_veto.html, and “50,136 words”:http://www.manton.org/2005/12/50136_words.html. But hopefully by unifying things a little it’ll be more consistent, and encourage visitors coming to my blog for the first time to also buy some Mac software.

Thanks for your support over the years. Even when the referrers dry up and the click-throughs aren’t worth graphing, I’ll still write here, and maybe every once in a while it’ll be something good.

The only 2 fixes for the iPhone platform

I let my iPhone developer account expire last week. Even though I had already stopped development on my iPhone projects, officially letting go of even the temptation to build for the iPhone platform has really helped me focus.

The Rogue Amoeba rejection for Airfoil Speakers Touch has been covered on Twitter and at Daring Fireball, but I think it’s easy to get distracted by legal technicalities and not the heart of the matter: as long as Apple is the gatekeeper, there will be bad decisions and apps that deserve to be approved will be rejected instead. For this reason the App Store cannot be fixed with incremental improvements.

There are only two possible solutions:

  • Accept all applications. Joe Hewitt, the developer of the Facebook application who this week also quit the App Store, has written well on this solution.
  • Allow applications to be installed on the phone without being listed in the App Store. Both Android and the Palm Pre support this model.

There is no third or fourth solution. There is no compromise or small improvement to the review process. Better transparency or tiered support options won’t help either. Without either of the above two changes, rejections will continue because in a subjective review process there will always be bad judgement calls. Some percentage of indie developers will abandon the iPhone either because the risk is too great or based on principle alone.

Let me take the second one (allow applications to be installed without being listed) because it plays directly to this Rogue Amoeba rejection. Rogue Amoeba is one of my favorite Mac companies, and Daniel Jalkut and I record Core Intuition using their Audio Hijack Pro app. It’s universally regarded as great software.

It might surprise you to find out that Audio Hijack Pro is not listed in the Apple Downloads site, though other Rogue Amoeba products such as Fission, Nicecast, and Airfoil are. I’m not sure Rogue Amoeba has ever spoken on the record about this, but Apple apparently doesn’t like the app and won’t list it. Maybe because you can use it to record copyrighted music? Who knows.

But it doesn’t matter because being rejected from Apple Downloads doesn’t mean you can’t make Mac software! It just means you have to market the software yourself. Rogue Amoeba has to work extra hard to get the word out about the app, but their business won’t fail just because Apple doesn’t give it their blessing.

This is so important for a small company. I want my software to fail because it sucks, or is buggy, or doesn’t have the right features, not because Apple can shut me down over a minor difference of opinion.

There are a lot of well-intentioned suggestions for improving the App Store, but the result will always be the same until we acknowledge the root problem. The only fix is for Apple to remove itself as gatekeeper, or let us route around them.

Feedback about lost sales

“Great post by Jason Cohen”:http://blog.asmartbear.com/blog/put-down-the-compiler-until-you-learn-why-theyre-not-buying.html on why you need feedback about the real reason people aren’t buying your product:

“You need to talk with the people who were interested enough to find your website, read your marketing copy, download your product, and then _give up without even an email_. That’s the low-hanging fruit; those are the people who are _in your grasp_, who should be buying _today_, but aren’t.”

I fall into this trap quite often, of pretending I know what the product needs for sales to finally take off. So I’ll add all the features I hope customers want, or I’ll make a small change and see if sales improve. But the truth is that there are so many variables in this system that it’s difficult to know which change made the difference.

As an example, I decided recently that I was being too generous with the demo limits in “Clipstart”:http://www.riverfold.com/software/clipstart/, so in the 1.2.1 release I turned them down a little. Instead of letting you tag 30 videos and upload 3 for free, it’s down to 20 videos and 2 uploads. The idea is to just do a little bit more to encourage users to buy the software when they are first trying it out and like it, rather than waiting a month until they decide to use it again.

Sales have been up the last week, so this worked, right? Maybe not. Clipstart has a review in this month’s print edition of Macworld, so it’s possible the sales are up because of that. Or because a couple of my blog posts have been linked more heavily recently. Or for any number of other reasons.

Unless you measure why the product doesn’t sell, success will be based on luck and intuition, which only go so far. I’m looking forward to reading Jason’s next post.

It’s okay to ignore the iPhone

I talked in “Core Intuition episode 22”:http://www.coreint.org/2009/08/episode-22-not-just-a-hobby/ about how I’ve stopped working on my indie iPhone apps. Mike Ash is also done with it. “He writes”:http://www.mikeash.com/?page=pyblog/the-iphone-development-story-one-year-later.html:

“I have abandoned the platform. Apple’s nonsense is just too much for me. There’s no joy in iPhone development, and an enormous amount of frustration.”

Reading through the comments got me thinking. I’m not abandoning the iPhone just because the App Store is such a frustrating environment to run a business in, or that I have a bunch of real work I could be doing instead of playing games with Apple. It’s also because most of the apps I would write have already been done, and in some cases done very well.

I love having a small computer in my pocket and mine is full of third-party apps. I’m thankful for the developers who are coming from other platforms and focusing all of their attention on the phone. And they are thrilled to be an a platform that is such a step up from traditional mobile development. The financial success stories of developers hitting on a great idea and it just taking off in the App Store are real and inspiring.

But the iPhone doesn’t need me.

As a user there’s no way I’ll give up the phone, but as a developer I can focus my time on “things that I have control over”:http://www.riverfold.com/, and add value to places where no one else has a good solution. Perceived gold rush or not, stretching myself too thin with both iPhone and Mac development is a great way to fail at both.

Imagine for a moment that “Yellow Box for Windows”:http://www.cocoadev.com/index.pl?YellowBox wasn’t killed off — that we could build Windows apps using Cocoa. Should I make my apps cross-platform just because it’s Objective-C? No. Writing software for a platform I don’t use would be like still supporting Mac OS X 10.2; there’s no way I’m going to boot into that thing to test and fix my app.

If you’re a Mac developer, my message to you is the same: just because the iPhone is awesome and runs on Objective-C does not mean you are required to build software for it. Maybe your time would be better spent refining old apps or building new ones on the Mac. Maybe… the iPhone doesn’t need you, either.

VoodooPad help update

Somehow it’s been a couple years since I wrote about “using VoodooPad for authoring help”:http://www.manton.org/2007/01/falling_in_love.html. I always meant to update the post with more information, and I still receive occasional follow-up emails from developers who are trying this for themselves. My workflow is virtually unchanged since then, and the help for “Clipstart”:http://www.riverfold.com/software/clipstart/ is built the same way.

Here is the Clipstart VoodooPad document in case it’s helpful to other developers: “Clipstart_Help.vpdoc.zip”:http://manton.org/misc/Clipstart_Help.vpdoc.zip. The important parts are the special pages WebExportPostflightScript and WebExportPageTemplate.

Meanwhile, “Philippe Casgrain wrote a great blog post”:http://developer.casgrain.com/?p=16 that is nearly identical to what I do, but with more detail and steps for triggering an export from Xcode. Lately I’ve been pointing people to his post since it’s more technical than mine was.

“Mark Dalrymple also posted”:http://borkwarellc.wordpress.com/2009/09/07/voodoopad-and-subversion/ a time-saving SVN script for VoodooPad today. I’ve been needing this!

VoodooPad is just a really good fit for this stuff. (Also see “Macworld’s 4-mice review”:http://www.macworld.com/article/141473/2009/07/voodoopad41.html for VoodooPad 4.1.) Or if you are more of an OmniOutliner kind of person, check out “Omni’s Helpify tool”:http://blog.omnigroup.com/2008/10/02/helpify-the-omni-help-emitter/ for converting outlines to an Apple help book.

Image Capture API

In “episode 21 of Core Intuition”:http://www.coreint.org/2009/07/episode-21-the-tyranny-of-commit-access/, I called the Image Capture API “quirky”. What did I mean by that? A few things.

Refcon. This should be familiar to anyone who has built Mac OS 9 or Carbon apps. I’ve certainly written plenty of code that stuffed a pointer to an object in the refcon field of a structure or passed to a callback method. It’s an essential pattern for being able to integrate C++ or Objective-C objects with a C-based API.

For Image Capture, the code might look like this:

  ICAGetDeviceListPB pb = {};

pb.header.refcon = (unsigned long)self;

OSErr err = ICAGetDeviceList (&pb, YourDeviceListCallbackHere);

Then in the callback you cast the refcon back to your controller object and go about calling methods and accessing member variables.

  void YourDeviceListCallbackHere (ICAHeader* pbHeader)

{

YourController* ic = (YourController *)pbHeader->refcon;

[ic doSomethingUseful:pbHeader];

}

Works fine, but what about 64-bit? The reason I noted this part of the API to blog about was because the first version of my code accidentally cast my pointer to a UInt32. Luckily for us, the refcon is actually declared as an unsigned long instead, so it should share the same pointer size in 64-bit land, where long and void* are both 8 bytes. Other data types in Image Capture, such as ICAObject, are declared to be UInt32.

(What would we do if the refcon was UInt32? The solution is not terribly difficult: use a simple lookup table that maps a random ID or incrementing number stored in the refcon to your 64-bit compatible pointer. But this just doesn’t seem to be necessary very often.)

No delete function. I found this one strange, and had to dig in example code to find the solution. There is no first-class function in Image Capture for deleting objects off of a camera. Apparently this isn’t a feature that is supported by all devices, but nevertheless it seems common enough that it deserves something more than an enum constant hidden in a secondary header file.

Here’s how you go about deleting a video off of the iPhone:

  ICAObjectSendMessagePB pb = {};

pb.header.refcon = 0;

pb.object = (ICAObject)your_movie_id_here;

pb.message.messageType = kICAMessageCameraDeleteOne;

OSErr err = ICAObjectSendMessage (&pb, NULL);

Bad delete on success design. Related to the above, Image Capture has this trick that seems clever at first but which I don’t think could be used for most applications. You can set a flag to tell Image Capture to delete a video after it imports. Maybe this also explains why there’s no standalone delete function, but the design feels dangerous to me; if an import fails halfway through importing 10 videos, the first 5 will still be deleted. I much prefer to examine the imported files to make sure they were saved correctly, and then after everything was successful go back and delete the imported objects.

It’s been a couple months since we recorded Core Intuition 21, but there are some other segments worth noting. Daniel and I talked about the WWDC 2009 session videos, a plug for “rooSwitch”:http://www.roobasoft.com/rooswitch/, beta testing MarsEdit 3, and a listener question about working for non-developer managers. Listen at coreint.org or “subscribe in iTunes”:http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=281777685.

LEGO minifigures

My son is seriously into LEGO Star Wars right now. He’ll spend hours every day building ships, and it’s the most incredible thing watching how good he’s gotten at it over the last couple of months. For his birthday we ordered him the X-wing set, which is “all kinds of awesome”:http://www.flickr.com/photos/manton/3766379995.

One of my favorite posts to this blog was partially about LEGOs. “In 2006 I wrote”:http://www.manton.org/2006/01/limitations_in_toys.html:

“If the toy is made to do a few specific amazing things, with a bunch of bullet points and exclamation marks on the side of the box, be weary of it. For example, modern LEGOs come in all sorts of pre-molded shapes. If you buy the pirate set, it will be great fun for the first few days until you realize that it can only be a pirate ship. But if you buy a bucket of LEGOs (yes, they still sell these), you can build a pirate ship one day and a barn the next.”

There’s a lot more to the post, and I still believe what I wrote. But it turns out that LEGO Star Wars sets are surprisingly well designed. There are very few custom pieces, and almost all the sets (we must have about 10) share the same shapes, just with different colors and for different purposes. I’m a big fan now.

lego_minifigures.jpg

Tonight we sat in bed together and looked at LEGO catalogs. I’m in those awesome years where being a dad is just like being a kid again, and this post is to capture a little part of that moment, before it’s gone.

Crippled iPhone LGPL

I mentioned on the “latest Core Intuition”:http://www.coreint.org/2009/08/episode-22-not-just-a-hobby/ that I no longer have any plans to release my own iPhone software. While that decision is mostly based on my unwillingness to give Apple so much control over my business, and frustrations with the App Store process in particular, there are a handful of technical reasons why iPhone development is not a good fit for me. Here’s one: open source.

“Daniel Jalkut’s essay on the GPL”:http://www.red-sweater.com/blog/825/getting-pretty-lonely hits all the points about how the GPL can hurt developers by discouraging commercial participation. I’ve used LGPL projects in both “Clipstart”:http://www.riverfold.com/software/clipstart/ and “Wii Transfer”:http://www.riverfold.com/software/wiitransfer/, and I am careful to use them correctly. But iPhone development presents an interesting problem.

Can’t run command line tools. Separating the GPL code into a command line tool that is inside your application bundle is a common way to get around licensing issues. This is not allowed in the iPhone SDK.

Can’t replace dynamic libraries. The LGPL says that you can also link to libraries at runtime, but the catch is that the user must be able to replace an LGPL library with a newer version of their choosing. There is no way for normal users to do this on the iPhone.

Can’t use private frameworks. Oh, that point above about dynamic libraries? Actually it’s a moot point because Apple requires everything to be statically linked anyway. So you are blocked at every pass; you can’t ship an app that loads code dynamically even if the user could touch it.

The only solution I’ve seen so far is to release a special version of your Xcode project, with most of your application split into compiled libraries instead of source code, and allow developers with the iPhone SDK to relink your application with a different copy of whatever LGPL code you used. I stopped researching this when I put my own iPhone projects on hold, though. It’s just another example of how the closed nature of the platform creates an unnecessary burden in the software development process.

Better is the best marketing

“Gus Mueller”:http://gusmueller.com/blog/archives/2009/08/setting_the_right_priorities.html, in response to a post from Joel Spolsky:

“If no one is buying your app then you’ve either got a dud and you need to focus on something else, or you need to improve your app so it’s worth paying for.”

I hinted at this in “my last post about new Clipstart features”:http://www.manton.org/2009/08/clipstart_12_ships.html. When Clipstart 1.0 launched and sales were lower than I had secretly hoped, the feedback was still so encouraging that it was obvious I had to keep rolling out new versions. Release 1.1, a month later. Release 1.2, which is “shipping today”:http://www.riverfold.com/software/clipstart/.

Some products are just easier to sell than others. For Wii Transfer, people enter “music wii mac” in Google and then a few minutes later they are clicking the Buy button on my web site. But with Clipstart, even though I believe it to be a superior product, it’s going to take work and marketing and word-of-mouth and demo coaxing and making it so good that you’d be nuts to shoot video and not have it installed.

Go without food

For the last couple of years, I’ve been squeezing work out of every free moment I have to build Clipstart and Wii Transfer, and every six months or so I’m just completely burned out and need to take a break. I was in North Carolina for work meetings last week and after coming back I took the opportunity to sleep 10 hours a night for 3 days. I seriously needed rest and to spend some quality time with family away from the computer.

And now I’m making some coffee and ready to get back to work.

A lot of people ask me how I’ve been able to dedicate time to side projects when my life is already pretty full with a regular job and kids. The truth is that most of us have small pockets of free time, and it’s just about how we prioritize and use that time.

Gus Mueller says that the secret to building VoodooPad 1.0 was simple: he didn’t own a television. Gary Vaynerchuk, in his upcoming book Crush It, puts it this way: “Someone with less passion and talent and poorer content can totally beat you if they’re willing to work longer and harder than you are.”

So it’s about setting priorities and pushing yourself. Pretty straightforward. But recently I ran across a forum post on the community site ConceptArt.org that took this even further — that success comes not just from priorities and working hard but also with real sacrifice. The members of ConceptArt are passionate about improving their art and helping others, and there’s an obvious pride there that comes from the shared challenge of becoming a better artist.

In a comment on attending a $95 painting workshop, the first commenter said:

“I honestly don’t care if I have to go a week with practically no food to be able to afford it.”

There is something in that extreme comment that just nails it. Go without food? We’re still having trouble with the trivial sacrifice of not watching TV over here!

The advice I’ll give to myself and to anyone else who needs inspiration on finding time: rewrite that comment for yourself, replacing “week”, “food”, and “afford it” with what your sacrifice is going to be. Examples:

“I honestly don’t care if I have to go for a year without watching TV to be able to build my product.”

“I honestly don’t care if I have to go for a week without sleeping more than 5 hours a night to be able to ship on time.”

“I honestly don’t care if I have to go for a month without reading blogs to be able to focus on my own ideas.”

New projects aren’t going to magically finish themselves. If we’ve been tinkering with a project for a year and it seems like it’s never going to be done, the reality is that it probably cannot be finished without making a scheduling change. Even a tiny sacrifice to open up an extra hour a day might be enough to make it happen.

Clipstart 1.2 ships soooon

Now that I’m done “giving away a free iPhone”:http://twitter.com/manton/status/3370506213, I can move on to the next phase of my marketing plan: release new and better software! Crazy, huh? Clipstart 1.2 is nearly ready and I’m very proud of this release. There’s so much new stuff I could have called it 2.0.

Batch export. Select multiple videos and convert them to H.264, or optimized for iPod, iPhone, and Apple TV, and optionally run a script on the results. It can even create an HTML 5 web site and export in Ogg Theora format for Firefox and Opera users.

Twitter upload. Works with Yfrog to upload a video and post to Twitter. To include a custom tweet, use the “Upload with Options” command, just as you would add a description to a Flickr, Vimeo, or YouTube upload.

New tagging interface. Easy way to tag multiple videos from the keyboard. You can also now drag videos to an existing tag to apply that tag to the selection.

iSight capture. I wasn’t planning on adding this until later, but I think it complements the Twitter support well. Capture from the iSight and it records as H.264 and adds the video to your Clipstart library.

New toolbar and button style. I shouldn’t have used the round rectangle scope button style in Clipstart 1.0, so I decided to roll my own that fit well with the toolbar. It’s still not a standard toolbar but I hope to transition to one in a future version of Clipstart.

Change date for multiple videos. You can update the date for multiple videos at once, with the flexibility of changing specific portions of the date, such as just the year or month. Great for correcting dates from cameras.

AppleScript support. Just the basics for now, but you can get a list of videos, with tags and other metadata for each.

Plus some other fixes and Snow Leopard compatibility. I plan to release it in the next couple days, just in case Snow Leopard is released on the 28th as rumored. If you are interested in trying a beta and submitting some last-minute feedback, drop me an email at “support@riverfold.com”:support@riverfold.com.

Wii Transfer survey

Yesterday I sent out a newsletter to all my “Wii Transfer”:http://www.riverfold.com/software/wiitransfer/ customers. You can see the “text of the newsletter here”:http://www.riverfold.com/newsletter/2009/07.html. I wasn’t sure how effective this would be, but I immediately got a bunch of responses to the survey, and hopefully more interest in Clipstart too.

I decided against doing any specific tracking for number of views and links clicked, but there was an obvious spike in traffic for a couple hours as people clicked on the links in the email.

The survey results are about what I expected. Most people are buying Wii Transfer to watch movies and listen to music on their TV. I’ll use this feedback to simplify the user interface around these features, and prune back a feature set that had grown a little too fast for its own good.

Here’s a chart of the results so far:

Survey chart

I used “Campaign Monitor”:http://www.campaignmonitor.com/ for sending the newsletter, and as usual I’m very pleased with how simple they make this. I did a full customer export from my registration database and Campaign Monitor merged it with the existing list from my newsletter last year, weeding out duplicates and removing anyone who had already unsubscribed.