I have been busy, busy, busy, but I have finally found, correction, made the time (I mean sleep when you're dead, right?) to write the second post in my series on creating a small software business. So, considering that time is very short these days, let's just get right down to brass tacks, what have I been up to with respect to this journey I've set out for myself?
To keep my posts organized, I've tried to come up with a list of areas in which I will discuss my progress during the life of the product and of the company. Each of those areas is detailed below with a small summary of what I've been doing in each for the past time period (in this case the past month).
Design
Well, first and foremost, I've worked on the design of my first application a bit more, fleshing out some of the details of how the app will work. The design of the GUI itself will stay roughly similar to my first draft until I can get something coded up that I can play around with. I did have another little breakthrough though with respect to application design—a second application idea. This one, in my humble opinion at least, is much more exciting and invigorating than the first. It came to me in the shower (where I do most of my thinking) while I was trying to force myself to take a new perspective on my first application. Both application ideas are tools for developers. The current application that I am working on can be seen as a bare bones "light" version of the second application for developers who like to do everything themselves. The new app idea, on the other hand, is much more powerful and can be seen as bootstrap's big brother. Oh, by the way, did I mention that I came up with a code name for my first application? No, well, I guess you've heard it now, my first app's code name is bootstrap (for various, mostly obvious reasons).
Financial
Now, I am starting this company with the idea that it will be a fun, hopefully somewhat lucrative, side project. Perhaps it will be a nice way for me to fund my current academic endeavors since my company's tuition reimbursement plan falls a bit shy of the whopping costs of Stanford's tuition. Also, if I do leave the corporate world for the ivory tower someday and go back for my Ph.D., it couldn't hurt to have a little extra income to augment the, typically way too small, stipends that most Universities give to their doctoral candidates.
Now, if any of the above comes true, I'll be extremely happy, but there is always the chance for an even better outcome, namely, complete independence. Ah, the dream of every indie developer, to make a comfortable living developing the software that you are passionate about. It could happen, and if it does, I want to be ready for it. With that in mind, I've taken a good hard look at what it takes to finance a new Micro-ISV. Just in case my products are a success and it looks like an independent living could be right around the corner, I want to have enough in the bank to say "stuff it", I'm gonna give this company my full attention.
Listening to the Mac Software Business podcasts from the Mac Developer Network, I've come up with the figure that I will need based on the concept of a six month sabbatical from the corporate world with a month or two of cushion. Given that number, minus the amount I currently have in my personal savings account, I came up with a projection of how much I need to save from each paycheck to be ready to go completely independent in one year. Given that projection, I updated my direct deposit this past week, and I am currently on track to have enough money to bootstrap my company for a full six months in exactly one year (give or take a paycheck or two). That idea is probably the most exciting to me right now, as it makes this whole endeavor seem so much more real.
Marketing
Marketing is an important piece of the software business puzzle, most likely ignored by the majority of developers until it becomes an absolute necessity. I've been reading everything from books to blogs and listening to every podcast under the sun about starting a company, and one conclusion that I've come to is that you need to start marketing early. Having a blog for your company is great, but I'm not that far along yet, so as a first step, I'm writing this series. This series is a good way for me to motivate myself and help others, which are my main goals, but it is also good advertisement for the products to come. Hopefully, this series can generate a bit of buzz around my nascent company and help with the sale of my products. As a result, I'm going to suggest that this post is, itself, one advancement I've made in my path to indie-hood underneath the heading of marketing.
Along the way, I plan to write up little posts detailing what I've learned as a result of my previous weeks' activities. The first of these posts should be up, hopefully, within two weeks. I've started working on the post, but unfortunately work and school are going to take precedence for the next week or two. But, keep on the lookout for a nice little tutorial that describes all the steps that you need to go through to create that common iTunes look and feel without any third party frameworks. The information is all out there on the internet for the taking, but I've not found a single consolidated resource that explains how to do this simply, so I'll post it myself.
Finally, with respect to marketing, I've added a bit of code to my blog to re-implement my cocoa posts RSS feed, so that the posts in this series will show up in the Planet Cocoa blog roll. I had this setup properly at one time, but then I switched from Wordpress to my own custom Django-based blog software and I broke the feed as a result. So, now if you are a reader of the Planet Cocoa website, you'll be able to see my posts on Cocoa in general, and in this series specifically, there.
Oh and one more thing, I've setup a Twitter account where I hope to "tweet" my progress in real time. You can follow me if you like at http://twitter.com/vthakr. So, please follow me, and I'll keep you updated on all the trials and tribulations that I come across on a daily basis while I try my best to get this company up and running.
Development
I have also started the development of my first product this past month. I've been working my way through Marcus Zara's Core Data book and so I've started off my development phase with the creation of my app's data model. Also, after doing some searching around the web, I found out how to create that iTunes look (i.e., source list in side bar with button bar along the bottom of the app window) and I threw that together. In the coming week, I hope to have the GUI hooked up to the data model, but I have some research to do first on how NSOutlineView works and whether to implement the datasource and delegate protocols for it or try to use an NSTreeController which I understand to be a bit limited and difficult to work with.
Research
With respect to research, I've had several different areas where I've done a bit of work. First, as I've stated in the last two sections, just finding out how to properly implement the iTunes-esque look and feel took quite a bit of research. Next, I've begun looking into finding a designer to create the icons for my app and perhaps help to define the brand for my company. I've found several that I really like one of which (sofa) is my current favorite as I love the icon that they created for the Cappuccino web app framework. finally, I've started investigating solutions for the licensing and updating of my software once I've got a product ready for release. Obviously this is an area that is a little farther off into the future right now, but it never hurts to start looking. I can say that the front runner right now for licensing is Aquatic Prime as it looks like I'll be able to write up a python script or two that will automate the licensing process for me with that framework. And, for updating, obviously, that will most likely be Sparkle, but it's never to early to start looking into how it works.
Conclusion
I think that about wraps it up for this past month. As you can see, I have made quite a bit of progress even if it hasn't made its way into this blog for the past month. Until next time, thanks for reading, I hope you enjoy the journey.