Stealth Player Development

My MicroISV. Where software development and pornography collide...

Subscribe in NewsGator Online

Monday, January 31, 2005

Web Site Templates

After giving the site an objective look, I decided it was weak. I wanted to keep things simple, but I think there's a thin line between simple and just down right ugly. So I finally bought a full site template for $85. I'll post a link to it when I upload the changes.


Thursday, January 27, 2005

My Boostrapper's Bible After Thoughts

Reading the Bootstrapper's Bible got me thinking about a couple things. First, I think I should start marketing now. Stealth Player is not done yet, but it's close. It's certainly not vapor ware. Second, I need to learn more about my market and the particular industry. So here are my plans...

Google will be central to both my endeavors. Soon as I get the Stealth Player website done, I'm going to start marketing it using google Ad Words. I can budget the ad campaign to $100 bucks a month. I don't want to be done with development and THEN spend a month figuring out how to use Ad Words. Since I should be done in a month or less, I think that's money well spent.

The major purpose of this exercise is to figure out who's interested in the product (if anyone). Visitors can sign up to be notified when Stealth Player is ready. If I don't get $100 worth of traffic, then I'll be learning ahead of time to adjust my campagn. If I do get $100 dollars worth of traffic and not one person signs up, I'll know ahead of time that I have issues, business model issues. Knowing this ahead of time will allow me to adjust my business model...ahh...ahead of time.

This leads me to my second thought. I need to know more about the industry I'm venturing into. I originally thought I was in the software industry and just happened to make software for porn. Now, I'm starting to wonder if I'm actually in the porn industry using software as a competitive advantage. The difference between the two realities is the business model. Am I selling software or porn? I'd rather think software.

I'm not a sleazy guy. Really I'm not...I'm out going, I surf (I'm not talking about the web), I love to hang out with my wife and friends...

There's a certain shame in pornography, it makes me uncomfortable. However, I think that aspect makes this market attractive. The barrier to entry is shame.

I wrestle with this because, after doing some research, it seems I have two potential business models. The first, which I prefer, is to sell access to the data my system aggregates through a value added interface. Doesn't that sound nice and sterile?

The second model is to give away the software for free with access to my data as a draw, then sell premium content to the users through the same application. After looking into it, purchasing distribution licenses from adult content providers is easy; easier and less expensive than I ever thought. This is inline with the Bootstrapper's Bible, which uses a Nike sneaker as an example. The manufacture in China gets $1 a shoe, Nike gets $10 a shoe, the distributor gets $25 a shoe, and the retailer gets $80 a shoe. Anyway -- If you don't know what I'm talking about GO READ IT! The point is I'm surprised at the margins that can be achieved.

To sum it up, here are my options:
Model 1: MicroISV - (Preferred)
Model 2: Porno Peddler - (I wouldn't go telling everyone about this one)

My first attempt at marketing will determine which direction this heads...I sure hope I can make Model 1 work.

Not to drag this on, but I just thought of something terrible. I've mentioned the work "Bible" in the post a couple times, I hope no one comes here from a search engine looking for religion...Oh, the nasty emails I'll be getting


Wednesday, January 26, 2005

Seth Godin's Bootstrappers Bible

This is a free download from MicroISV Reality. I read it during lunch today. It was reassuring to read because I feel I'm on target as a bootstrapper. However, it has inspired me to do things sooner. I'll explain what those things are in my next post. For now, if you’re a MicroISV, go read this e-book now!


Tuesday, January 25, 2005

More on Licensing

I'm giving licensing some real thought. I stated before that I would offer three levels of service, one free and two other levels for a fee. Now I'm thinking that I should offer this service and software for free and make money on the back end. Here's what I see as the two alternatives:

I was planning on offering premium content thought this software, but it would take some integration with content providers. I don't thing that should be very difficult technically.

If I give the software away free, I could get a larger user base faster. However I would then have to wait to get content providers on-line before any revenue came my way.

On the flip side, if I charge people for up-level service, then I could have the best of both worlds.

I guess I'm drawn to the free model because some of the competitors out there are free and work off of commisions. However their products don't seem that well thought out and kinda gimmicky. I'll keep mulling this over.


Moving to Production Pains

Most developers know that you can expect problems moving from a development environment to the production environment. Well, Stealth Player has been no different. I’ve been moving from my all in one development machine to the truly distributed production machines, and it’s been a pain!
I’ve successfully put half of the equation into place. I currently have my “media finder” application running and posting the results through a web service to my site. However, getting the client (Stealth Player) to work in with my hosted account is creating the biggest headache.

The problem has to do with dynamically downloaded assemblies. I thought I had figured out all the intricacies, but it just won’t work, and I’ve wasted enough time on it. So, because I get a FileNotFound (IT SHOULD BE F*CKING FOUND!!!) error when loading the assembly from my hosted web account, I’ve decided to move on. I’m going to spend tonight integrating the Updater Application Block from MSDN. I’m concerned this might raise the OS requirements for the client app. At first I really wanted Stealth Player to work down to Win95, but at this point I don’t want to deal with the hassle of supporting older OS’s. Besides, has shown that 80% of my site visitors are using WinXP.

Because I’m starting a MicroISV, I have a LOT to do. I think it’s important that I move on. I can’t try to conquer the world, I can’t serve every OS, and I can’t spend 10 hours solving a technical problem when I could just use a less elegant work around in 4 hours.. I have to keep telling myself – “End users don’t care how it works, they just care that it works”. Got to keep on moving forward.


Monday, January 24, 2005

Installer Part 3

It hasn't been easy working with the dotNetInstaller, but I 've gotten it to work. It seems the configuration file editor doesn't create the correct format XML that the included installer exe is looking for.

When creating a web installtion, there are two different configuration files needed. The first configuration file is used to describe all the dependencies and contains the bulk of the installation information. The second configuration file basically is used to specify how to download the first configuration file.

I kept getting xml parser errors, however the sample that came with the source code worked fine. To get things working I pulled out xml elements that were NOT in the working sample provided. The elements I pulled were:

In the first config
<schema version="1" />
<?xml version="1.0" encoding="utf-8"?>

In the second config
<?xml version="1.0" encoding="utf-8"?>

For some reason the first config would freak if <schema version="1" /> was included, but the second config would freak if the same element wasn't included. Go figure.

I'll make sure to pass this along to the author, perhps I did something wrong though. Is anyone else using dotNetInstaller to make a web installation that hasn't had these problems? I'd like to hear from you.


Installer Continued…

Well, I followed the instructions from the dotNetInstaller I got from the code project, but I was not successful in my first attempt. I think the problem is I followed the instructions without really understanding how this thing works. I guess I didn’t really want to take the time to know…I have so little time for these things. On the other hand, the installation MUST be smooth. No one can afford to loose customers before they even get to use the application you’ve spent months on developing.

I’ll look into the code base and the XML configuration file; get a little more familiar and post my findings back here.


Sunday, January 23, 2005

Creating the Installation for Stealth Player

One of the things I’ve never had to deal with in my career as a software consultant is the unknown state of clients. I’ve always developed applications knowing what to expect on the client’s computer. Even if there were a lot of prerequisite applications needed on the client, I never really had to deal with their installation. Instead, I relied on operations staff to take care of these issues.

Well today is a different day. My application has two major prerequisites, the .NET Framework and Media Player. These two pieces of software have there own prerequisites too, but both can work on windows versions down to Windows 95. The big deal here is I can’t put all the prerequisites into one MSI because it would be HUGH. I don’t want potential customers to be scared away by a long download time. This is especially true if the user already has all the prerequisites! What to do?

The solution I found was on Code Project. Davide Icardi is the man behind dotNetInstaller and he must be a crazy man, because his solution to my problem is worth money! If his prerequisite installer works and I make money using it, I’ll definitely send this guy a generous donation. In any case, Davide – THANKS. If you’re in my boat take a look, or if you have another solution to this problem, please let me know.


Saturday, January 22, 2005

More Details...What is Stealth Player?

I've noticed many developers don't like to talk specifics about their software before it's complete and on the market. They do this in fear that someone will steal their idea. I’m not worried, partially because I’m nearly done and partially because I know this software isn’t trivial. So here goes…

I’m developing software that aims to increase safety, privacy, and visual experience while viewing adult content (OK...PORN) on the internet.

Stealth Player has two major components. The first component spiders the Internet looking for freely available galleries and catalogs the galleries and content into a database hosted on my site. My system has been cataloging unique galleries at a rate of ~40,000 every 24 hours (I expect this to slow over time). Each gallery is categorized and its contents are checked for broken links and file sizes.

The second part of the software is basically a custom gallery browser and media player. The browser “talks” to the database of galleries over the internet (using Web Services) and displays a thumbnail selection of galleries to the user. When a user clicks a gallery of images, the browser opens a window that automatically slideshows the images. When the user clicks a gallery of videos, the browser opens a new window that slide shows the videos in which it plays the first video while downloading the second. When the first clip completes the second is played, etc… and it does it seamlessly. It effectively joins all the video clips in a gallery into one video, without waiting. It can also slide show galleries of mixed content interlacing video with still images.

A couple other basic features worth mentioning:
Users can -
+ Add and remove content to and from slideshows.
+ Rate galleries – an overall community rating for each gallery is tracked by the database.
+ Report Illegal content which every complaint is internally reviewed and if deemed illegal reported to the appropriate authority.
+ Sort, group, delete, and search galleries almost like email.
+ Archive slideshows and content which is encrypted and stored as otherwise unidentifiable files that can only be opened with Stealth Player.

Other Features -
+ Application is hidden from other users of the computer and can only be opened with correct username and password. It leaves no discernable trace of adult content viewing on the computer protecting children, non-understanding spouses, and guest computer users.
+ Because this is a closed system, there are no aggressive advertisements that can take control of your browser or attempt to install malware (spyware, adware, dialers, etc...).
+ Tabbed browsing like in FireFox.
+ System automatically detects and removes broken links.
+ Escape key works as “Panic Button” which closes all windows incase of unexpected interruption.
If I this goes well and there’s a sufficient user base I would like to partner with content providers to distribute their premium content through this closed system with unified billing to the consumer, taking a cut along the way. As a side benefit to content providers, the content cannot be shared outside of stealth player thus protecting there material from piracy. Again, the idea is to create a positive relationship with users in which they feel safe and their privacy is protected while providing the best visual experience.

Well that's it. The software is already usable and in the process of refinement. Testing has shown the application to be highly valuable. The benefits of using it are immediately clear and I have received significant interest from willing beta testers. The only things left to do it are polish and sell it.



I've given a lot of thought to Licensing. I signed up to use and I liked the way they do business so much that I decided to emulate it. They will count your site stats for free, up to a point. Once your site generates enough traffic it's time to pay up. I like that model because it's based on need.

I'm unofficially going to give pricing details. Users will be able to use the software for 10 sessions a month for free. This will ensure there is an active user base and encourage use of the product. Users who would like to use the system more will have two other options, 50 sessions for $9.95 or 150 sessions for $13.96.

Pricing seems to be one of the most difficult aspects of selling software. I'd love to get your thoughts on selling software as a service.


Added Notification Sign Up

I added a very brief page so you can sign up to be notified when the software is ready. Since the site is not finished yet I thought it might as well let people sign up for later.

Here's the link: Sign Up


Friday, January 21, 2005

Web Site Development

I worked on site design tonight, you can check it out here. I don't usually attempt design myself, but this is not the kind of site that I'd use a template for. In the past I've used BoxedArt for site templates, but honestly I think none of those templates would have been right for this. They're overly complicated for my needs and I don't think it would save me any time.

I've learned html about 8 years ago. At the time WYSIWYG html editors were starting to come into their own, but I still preferred notepad. Today, I use PhotoImpact to mock up the general site and then to clip the needed images. I like this product because it can work with tons of file types including .psd files from adobe. It's got it's share of issues, but for the money I'm not complaining. I'd love to hear from any readers on how and what they use for site design.

Once I've the basic site layout, I use the HTML view in VS.NET to create the general layout. With the layout complete for one page, I'll use the page to create a "master page" template. No, I'm not using ASP.NET 2.0, but I created a hack that does basically the same thing. I should try Xheo skinner, but I know my own code and don't have anything to figure out.

I'll publish the default page, to get things started. As you'll see, the fonts haven't been figured out yet, I'll leave it like that for now and apply a style sheet layer.


Tuesday, January 18, 2005

Taking care of business

Today I had to shift gears out of software development and into business administration. It occurred to me that I’ve been so focused on the software that I’ve neglected a couple steps which can take some time to complete. So I thought I’d share with all of you MicroISV wannabe’s (term of endearment) what you have to look forward to:

Signing Licensing Agreements – These are about as one sided as agreements get, but I’m not complaining because the end result is I get something for nothing. Yes, Microsoft Media Player will be part of StealthPlayer. I was planning on using DirectX, but there were technical issues that couldn’t be overcome with the time I had. That’s OK; Media Player gave me the same functionality I was looking for. People bad mouth Microsoft all the time, but I love them…and here’s why…total all the jobs and profits that have been made outside of Microsoft that would never had existed without Microsoft. That is one big number and I’m having a hard time finding other companies that can say the same. Anyway, I don’t want to start that old debate.

Purchase an SSL certificate – I’m buying a SSL certificate for the domain from They seem to have the right service level at the right price. I especially like the certificate logo, I want to do everything I can to make potential customers feel safe. I know many small software vendors use PayPal or other third party billing agents, but I need full control of billing for reasons that are beyond the scope of this post. I’m getting the CSR from my ASP.NET hosting provider now, did I mention that the hosting company I use rocks. Self service through their control panel isn’t the best, but the personal service rocks! I would rather send an email to have someone do something, than have to do it myself anyway. UPDATE – Got the CSR and fast, again Aquest Hosting rocks! OK, make sure to have proof of identification to send to the SSL issuer. I emailed them my articles of incorporation.

Find, fill out, and send a DBA (Doing Business As) – So I really don’t want to sell pornography related software under the same company name I provide software consulting services to fortune 100 companies. I think that could be bad for business. Plus, it’s not like my company has a sexy name. I was thinking of getting a DBA as “Rock Solid Software”. The double meaning may be over the top though. In the end the name isn’t as important, so long as it’s different.

Merchant Account – I’m going to use an reseller. They seem to vary greatly in fees, so I need to be careful here. Make take an extra day to decide. In any event I’ll let you know how it turns out.


Saturday, January 15, 2005

Memory Problem Solved!

OK, so no sample, but I can explain the fix...

I am loading user controls into a panel as a "Page", when the user closes the page, I was removing the user control from it's host panel's Controls collection and then calling Dispose on the User Control...

After profiling the application I noticed that the Remove method on the ControlCollection calls Dispose on the control being removed. I don't know why calling dispose twice caused the finializer to never get called, but that was the problem. I removed my call to Dispose and it works like a charm.


Memory Leaks - Not just for applications

What’s worse than a memory leak in your application? Not remembering what caused the memory leak last time when I fixed it! For the record, Stealth Player is built using a .NET Windows Forms front end. It’s not so much that the memory leaks, that I can’t find the root object in the stack holding a reference to the objects I want garbage collected in the heap. Some of the usual culprits I’ve found are event handlers, delegates (same issue as with events), and an oddity with multi threaded programming in windows.

Now I know UI elements need to be updated using the same thread that created them…I understand how to use Invoke and BeginInvoke on the control. But there seems to be a problem with the handle for the control hasn’t been created. The Invoke function will cause an exception, and for some reason a reference will be held to the control/object that I want garbage collected later.

I'll post a sample and a fix when I figure it out.


Friday, January 14, 2005

Welcome to My MicroISV Blog!

Welcome to my first blog! So what is Stealth Player and why am I writing a blog about it??? Well, Stealth Player is a software product I’m currently developing and it will be the first piece of software I’ve ever sold to the general public. You see, I’ve been an independent consultant for about 6 years now…I’ve built several applications in those years, but never an application for the general public. I’m writing this blog because I want to share my experience starting a “MicroISV” with the rest of you.

What does Stealth Player do? Seems like it’s a simple enough question, and I have a very good short answer for it…but I feel I need to preface the answer with an explanation of how I got here.

First, I’m an entrepreneur at heart. I’m an independent consultant because I enjoy the challenge and freedom of being self employed. That being said there is an inherent problem with consulting that can be summed up in a simple equation…

Hours Worked * Hourly Rate = Total Earnings

Let’s say I was getting a killer rate of $100/hr and I didn’t eat, sleep, or crap – so I worked 24 hours a day. Oh, AND my client has no budget and I work weekends! Then my total yearly earning potential for one year is $868,800. That’s a lot of money, BUT (not only is that scenario impossible) I can’t earn more unless I bill at a higher rate…Let’s look at a better equation…

Units Sold * Unit Price = Total Earnings

OK, I know what you’re thinking…you see my point…if I can sell 300 units a month at $10 a unit I make $3,000 a month. I’m now not limited by my time spent working. HOWEVER, the most important point is what you don’t see in the second equation…"Work". That’s not to say there’s no work involved, but this leads to the following thinking as outlined in the “Rich Dad, Poor Dad” series of books...

A business owner can be defined as someone who owns a business system; that is, the owner can leave the business for a year, come back and still have a business earning revenue. In my case, if I were to leave my consulting business for a year, my Total Earnings would be 0! So I don’t own a business – I am the business.

OK, I know I still haven’t answered the original question, but I will – and I’m glad you’re still with me. To summarize where we're at...Geting payed lots of money for an hour of work - bad, Selling a unit of software on the internet while surfing in Costa Rica - good.

Referring to the equation above, I wanted to maximize the first part of the equation, Units Sold. In order to do so, I need a large market. So I did some critical thinking…which reminds me...I would like to thank Eric Sink for his excellent string of articles on MSDN and his great blog. His writings are a must read for anyone considering the ISV business.

Critical thinking...deciding what to build is difficult... I know general business...but this space is filled with stiff competition... and I don't have any specific advantage...

Also, I need a large market of people who use computers and spend money online, perferably a market with little competition…Hmmm...What is the biggest market on the internet for that? Well, in case you didn’t know, it’s pornography.

I believe this is a large market that’s under served by the software industry, it makes sense though; I was hesitant to even consider it. After thinking about it, I decided that I could make software products to solve problems people experience surfing the internet for porn.

Stealth Player is the culmination of my extensive “research” in this area…Yah, like you don’t know what I mean! StealthPlayer will be the first application of its kind…that’s not to say it doesn’t have competition, it does indirectly, but I believe StealthPlayer is the start of the next generation “Killer App”. There I said it.

Internet Aggregation and Dissemination – You heard it hear first…there is nothing in Google about it. SEE no result as of 1/14/2005.

There is an inherent problem with search engines…They generically spider the internet, indexing pages, media, and other files. They lack focus and context. To prove my point google “Free Porn”…Did you find free porn? I found a bunch of links that say free porn, but are really advertisement filled web sites. If you actually find a site with links to free galleries you’ll find these sites redirect you to other advertisement fill sites…some times these sites can even take control of you’re browser using java script and start launching windows everywhere. So you see, that's just the start of the problems found in surfing the web for porn, and this is just one of the problems my software solves – no nonsense browsing of free pornography.

There is another inherent problem with search engines...let's say the "free porn" search returned lots of great links that weren't absolute garbage. Now let’s say that search returned 123,198 web pages… you only looked through the first 34 results…the next time you want to look at porn you search google again. Now the search yields 145, 743 web pages. How do you know what you’ve already seen? How do you know which entries are new? Imaging if your email worked that way… if the order of your email was random and ever changing, and you couldn’t delete it, you couldn’t sort it, and you couldn’t tell old from new. It would drive you nuts.

Internet Aggregation and Dissemination is mining the internet with focus and context then delivering the results in a way that complements the specific scope of information mined. I can think of many uses for this paradigm, but porn seems to have the largest market... so here we are.

I’ll be writing more about Internet Aggregation and Dissemination and how Stealth Player fits into that model in the near future…Stay tuned.