Code by Kevin, Programming, code, business, and other pursuits
Kevin Walzer, software developer.
Subscribe to RSS Feed
Get a syndicated feed of my weblog.
Site design: Skeleton
With today's release of Phynchronicity and PacketStream, I have now completed a major cycle of updates and modernization of my existing products. Now all my current products have significantly improved look and feel. Of all the work I've done over the past couple of years on platform-specific integration with Tk, my Cocoa toolbar wrappers (mactoolbar and prefstoolbar) are the most important from a visual standpoint.
Just as importantly, all six of my current products are at a good level of maturity; they have been through several releases each, and are relatively feature complete. This does not mean they have no room for improvement or additional features, but all six do what they set out to do, and do it well; none has a glaring hole in its functionality.
Now: it's time to expand the portfolio.
I've drawn up a list of approximately nine products that I will be working on over the next year or so. When all is said and done, I should have approximately 15 applications in commercial release, with varying degrees of active development.
My reason for undertaking this project: I want to grow my sales. And because my existing products sell modestly, the only way to increase my sales volume is to increase the number of products I have to sell. The strategy is simple: more products at modest volume = higher sales = more revenue.
This is something I have wanted to pursue for a long time, but there were several obstacles. First, my existing products needed continued development and maintenance. Second, I was doing a great deal of work on building up my development platform--creating libraries and components that could be used in any program I developed. Third, external market conditions--specifically the Mac App Store--forced me to re-tool both my products and my development process to meet App Store requirements.
None of this was wasted work. I continue to believe that Tk-Cocoa is the best cross-platform toolkit for the Mac. I'm backing that up by becoming one of the maintainers of Tk on OS X. And I'm an active participant in the Mac App Store. But if all that time spent working on libraries and Tk's core and my own App Store development process is like planting seeds, it's now time to bring home the harvest by incorporating that work into more products that I can sell.
As a result, while I will continue to work on Tk-Mac's core, I'm done creating libraries and extension packages for the near and middle future, and I'm not going to be substantially updating my existing apps for a period of some months. Instead, I'm going to be proceeding full steam ahead with development of new applications, trying to increase the number of modest sellers in my portfolio to the level where those modest sales add up to real volume.
This is not an easy strategy to follow. The usual advice in the Mac development community is "make your apps awesome"--as this tweet from Gus Mueller of Flying Meat Software, responding to some of my own thinking-out-loud of this problem on Twitter, demonstrates. Well, the issue here is that I've tried to do this. My applications are orders of magnitude better than they were four or five years ago. I'm also much smarter about marketing, about getting the word out on my products, and taking advantage of promotional opportunities (app bundles, one-day discounts, etc.) to increase sales. But product excellence and good marketing aren't enough. For whatever reason--because of luck, competition, the product niches I've chosen, or, perhaps because I have failed to "take out the suck"--my apps sell modestly, some less than a thousand dollars per year each.
As a result, a realistic assessment of the best path to growth requires me to recognize that I don't have a breakout product--and probably never well. I have a portfolio of modest sellers. There are two ways to increase my sales volume: sell more of what I've got, or make more to sell. I can't seem to sell a lot more of what I've got. So I need to make more products to sell.
There's a name for this strategy: the "long tail," first coined by Chris Anderson in an article in Wired. It's a strategy optimized for the Internet and online selling, in which a huge number of niche products, selling little in themselves, achieve massive scale in toto. Amazon is built on this strategy. So is iTunes. Another business I'm involved in, a publishing operation that utilizes print-on-demand technology to sell small numbers of many, many books, also makes use of this strategy.
So I'm confident the strategy is sound. The challenge will be execution. Software development is a labor-intensive process, and creating good applications is a non-trivial enterprise. My approach here will be to lean as much as possible on projects I've already done or can access--open-source libraries and tools--to do a lot of the work for me. Speed of development and release is a major criterion in selecting which products to do and which products to reject. But my approach isn't totally cold-blooded: I'm only going to work on things I'm excited about, that I will make use of, that will scratch some personal itch of mine. That's always been a rule of thumb: I believe that if a product I develop serves some need of mine, then at least a few other users will probably feel the same way.
I'm very excited about this new path I've chosen. I've been wanting to develop some new products for a long time, and I've finally arrived at the point where I'm able to do so. If nothing else, this will be fun, and I'm also hopeful that it will improve my bottom line in a significant way.
Wish me luck!
Apart from my commercial products and my Mac libraries for Tcl/Tk, I've taken on another important duty: I'm now one of the maintainers of Tk on OS X, responsible for fixing bugs, implementing features, and assisting with releases of the core Tcl/Tk language on the Mac. If you check out http://core.tcl.tk/, you'll see some of my code--bug fixes and new features to help improve Tcl/Tk's core functionality on the Mac. (My libraries, by contrast, extend Tcl/Tk's functionality into areas that the core language does not address.)
While it's unpaid and not glamorous, this is an important job. I'm helping to tend the garden that provides part of my livelihood. I've long wanted to help contribute to Tcl/Tk, and it's a real honor to be able to do so now. It's with a hugely talented group of developers, whom I continually learn from. I'm grateful that my skills have progressed to the point that I am now part of this talented group, and I'm glad I can offer some of my time and assistance.
I've just released versions 4.0 of Phynchronicity, my GUI for the Fink Unix software tool, and PacketStream, my GUI for the Mac's built-in tcpdump network monitoring tool. Both releases include a major modernization of their user interfaces with a native Cocoa toolbar, as well as improvements in their print functionality. The UI modernization lays the foundation for further updates of these apps in the future as first-rate Mac OS citizens.
If you use Fink to install open-source software, Phynchronicity is well worth your time. It is more actively developed than other GUI's for Fink, and I believe it's easier to use.
If you do network monitoring, PacketStream offers a good balance between power, ease-of-use, and price.
Check both out and let me know what you think.
For what it's worth, neither are available in the Mac App Store, for the same reason that PortAuthority is not available--both applications require administrator-level permissions to run certain tasks, and Phynchronicity is also dependent on an installation of Fink. But both are easily purchased from my website.
These releases complete the modernization of my current products with a fully-native Cocoa UI and other under-the-hood changes for integration with the App Store (where appropriate) and better system integration overall.