1. Play-by-Play: Ruby, Rails, and Heroku Versions

    June 4, 2010 by Craig

    First, update to macports 1.8.2.

    Ruby Update

    sudo port install ruby

    I’m going to get 1.8.7 p249

    • p249 “has marshaling bugs that crash Rails 3.0.0
    • Get RVM to help manage the versions.
      bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
      if [[ -s "$HOME/.rvm/scripts/rvm" ]]  ; then source "$HOME/.rvm/scripts/rvm" ; fi
      source ~/.rvm/scripts/rvm
      rvm notes

      Add to .profile:

      for profile in .bash_profile .bashrc ; do echo 'if [[ -s "$HOME/.rvm/scripts/rvm" ]]  ; then source "$HOME/.rvm/scripts/rvm" ; fi' >> $HOME/$profile done

      Is this necessary? Should it be in .bash_profile? (Probably not as it references .bash_profile). I’m still fairly new to UNIX and so don’t know my profile consequences off by heart.

    I’m not going to get into ruby 1.9 as Rails 3 isn’t stable on 1.9.1 (1.9.2 only) and Heroku only supports 1.9.1.

    Rails 3

    I’m preferring Rails 3 as:

    • It’s definitely the way of the future.
      • There’s quite a few new APIs — meaning old ones will be abandoned. Rails doesn’t sit still.
      • The API appears to be improved all the way around; it’s more fun to use.
    • It should be stable & released by the time I’m ready to launch.

    But which ruby version should I be using? All seem to have potential for issues. I’ll run 1.8.7@249 and see if it works.


    RubyGems update, attempt 1:

     gem update --system
     Updating RubyGems
     /opt/local/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:245: [BUG] Segmentation fault
     ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9]
    Abort trap

    I didn’t sudo, and it gave me a segfault instead of a real error 🙁
    Attempt #2, this time with sudo:

     sudo gem update --system
    Updating RubyGems
    Updating rubygems-update
    Successfully installed rubygems-update-1.3.7
    Updating RubyGems to 1.3.7
    Installing RubyGems 1.3.7
    RubyGems 1.3.7 installed
    Successfully uninstalled gemcutter-0.1.6
    Successfully uninstalled gemcutter-0.3.0

    Update Rails

    gem install rails --pre
    Installing ri documentation for rails-3.0.0.beta3...
    File not found: lib

    Found the issue here. How did we ever develop software before Google?
    This might not be a big deal after all.


    I’m going to try Heroku for deployment/hosting.
    First, I need Bundler:

    sudo gem install bundler
    /opt/local/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:254: warning: getc is obsolete; use STDIN.getc instead

    I hate warnings.

    Next is the Heroku gem:

    sudo gem install heroku

    Time to read up on the Heroku quickstart.

  2. Play-by-Play: Initial Git

    June 3, 2010 by Craig

    Time to set up a GitHub project. Github is, at the very least, a good offsite storage system for the source code.

    cd "/Users/craig/Documents/SoftCraft/projects/bakery/"
    mkdir rails
    cd rails
    touch README
    touch .gitignore
    git add .
    git commit -a -m "Initial commit"
    git remote add origin git@github.com:softcraft-development/bakery.git
    git push origin master

    And we’re in business!

    Update .git/config with a couple of nice features:

      undo = reset --hard HEAD
      wipe = clean -f -d

    While I’m at it, I’ll update my copy of git too.

  3. Play-by-Play: Fixed and Unknown Costs

    June 1, 2010 by Craig

    Unlike the variable costs, some costs are roughly constant regardless of how many customers you have. Paying for these costs is why it’s so important to have high margins and high customer volume; there’s a hurdle to overcome before the business is bottom-line profitable.


    Legal costs aren’t much fun but they are necessary. I’m estimating roughly $1000 per year in basic legal costs. If I actually get sued then it’s another ball game entirely. The lesson here is “Don’t Get Sued.” Also, there’s roughly another $1000 in one-time legal fees during incorporation.


    Liability and business insurance are good safety nets to have; they will hedge against potentially catastrophic losses. I’m estimating $2000 per year based on some personal liability quotes I’ve received already.


    I do all my own accounting and taxes for my sole-proprietor consulting business, but corporate accounting makes me shudder. $1000 a year paid to a professional accountant is plenty, assuming that I have someone else do the actual bookkeeping. I’m fine with doing that myself for the short term.

    Graphic & User Interface Design

    I’m not the worst designer in the world, but I’m a long way from being great. Having a pleasing and usable interface is critical to any modern product. I’m going to budget $1000 for the initial design, with more as the business & feature set grows.

    Not the Whole Story

    There are other costs that I’m intentionally leaving out.

    Cost to Acquire a Customer

    This is a fancy way to say “advertising.” You have to get your product into the minds of your potential customers, and doing so will incur some cost. Word-of-mouth is by far the best and cheapest way to accomplish this, but it’s also the hardest — especially when you’re first starting out. Google AdWords is the easy route, but lately I’ve been hearing rumblings about how it’s not really all it’s cracked up to be. I’ve got some other ideas too; I’ll save those for another post.

    The take away here is that it’s very hard for me to estimate what these costs will be in advance. Remember that the goal here is not just getting people to visit the site, but turning them into paying customers. Lots of companies have gone broke before figuring out how to do that effectively.

    Support Costs

    Customers need help — or eventually they won’t be your customers any more. The trouble is that it’s hard gauge how much money you’ll need to spend to keep your customers satisfied. It’s a combination of the number of customers you have, the fraction that experience trouble, and the time you need to spend to resolve the troubles. This is why user experience & interface design are so important; your application needs to be easy to use so that you’re not burning time, money, and support on frustrated users.

    For the time being, I’m going to handle all support myself via email. Doing it myself isn’t very cost effective but it is low-risk in terms of cash. When the business gets big enough to warrant it I’ll look at hiring someone else to handle it; then I can concentrate on more value-adding activities.


    This is the big one. The tradeoff for the amazingly high profit margin on software is the amazingly high cost to create the product in the first place. I’ve already sunk “several thousands” of dollars into this project and it’s not even off the ground yet.

    The trick here is that, as long as I’m the one who is doing the development, those costs are all phony. All I’m really spending is my time. I’m not emptying my wallet for someone else and I’m not paying taxes (yet) on the work I’m doing. My spent time isn’t valueless, but it’s a long ways off from risking my house and retirement as startup capital.

    What Am I Missing?

    These costs are just the ones off the top of my head. I’m deliberately not over-analyzing the business model because the unknown aspects are so big. However, if you’ve got a important point that I’ve missed, please feel free to share.

  4. Play-by-Play: Variable Costs and Margins

    May 30, 2010 by Craig

    I did the revenue analysis; now it’s time for the expenses.

    Variable Costs

    These are expenses that are directly proportional to the number of customers you have. More customers = more variable costs.


    For a cloud-based web application, the costs are pretty small. Heroku charges dyno can handle around 10 to 50 customers per second. Given that I’m only expecting 250 non-heavy-duty customers total, the variable costs should be tiny. I’d guess that the app could be hosted for less than $100/month, or $1200 a year. The cost per customer is about $5 per year. Chump change.

    Payment Fees

    I’ll need a merchant account to accept credit cards. I have some quotes for roughly 15 cents + 3% per transaction + $30/month (though the actual amounts vary a bit with provider, volume, and monthly fee). That’s about $4700/year, though with this sort of volume I could probably get a lower transaction fee for lower overall costs. It’s also about $19 per customer per year.


    Over and above the merchant account fees are the payment gateway fees. I’m looking at Chargify as it has a good reputation. It costs $50 for up to $500 users; for my 250 users that’s $0.20/user… basically not worth considering.

    Gross Margin

    So if revenue per customer is about $520 per year, and the variable costs per customer are $25 per year, then the gross yearly margin per customer is $495. The margin rate is an astonishing 95%. For reference, a lot of businesses run on margins of 20% or less; really high-volume ones often have margins in the low single digits. That’s the beauty of software: once you build the thing, it costs nearly nothing to supply it to your customers.

    Next up: fixed costs.

  5. Play-by-Play: Revenue Model, Indecently Exposed

    May 28, 2010 by Craig

    I want to publish some analysis regarding the costs of running this business/application. However, to make any real impact, I have to publish the revenue numbers too. I originally said I wasn’t going to do that, but I think it’s worth doing so now given my next post. That, and Teflon Ted said I’d be uncool if I didn’t.

    Answers to My Questions

    Q: How much on ingredients does the bakery spend?

    Depending on the quality of ingredients anywhere from $1000.00 – $5000.00 per week

    Q:How much of the overall waste could be eliminated through better
    planning (via the product we want to build)?

    I would say that there is always waste, any more than 10% can be very detrimental to a small bakery, especially on a daily basis.
    I think if done properly and the bakery is actually planning and following their projections the waste could be brought down to 3-5 %

    Running the Numbers

    Conservatively: $1000 in ingredients per week * 5% minimum reduction in waste = $50/week in potential savings to the customer. That’s about $2600/year.

    Multiply $2600 by some number A, which is the percentage of this savings that you can successfully extract from the customer. I’ve been ballparking this number at 20% for no good reason other than the result seems palatable to me. $2600 * 20% = $520/year, or $43/month.

    There are about 25,000 bakeries in Canada and the US. Multiply this by some number B, which is your customer conversion rate. I’ve been using B = 1% as a suitably low number. 25,000 * 1% = 250 customers, which seems pretty attainable.

    250 customers * $520/year = $130,000.

    The real revenue number is 65 million * AB (minimum). Increase A and B to increase the total revenue.

    That’s a brief look at the revenue side. Next come the expenses.

  6. Play-by-Play: The Architecture

    May 25, 2010 by Craig

    A pay-as-you-go service goes hand-in-hand with a web-based application; it’s much harder to make a viable one-time-purchase web service or a pay-as-you-go desktop application. This choice of architecture has several benefits of its own:

    • Lower (nearly zero) maintenance for the customer. There’s no software to install and no servers to operate.
    • Easier compatibility concerns for the developer. Modern web development is very consistent across platforms (assuming you choose not to support Internet Explorer 6 or less. Even if you target modern Windows exclusively (and that probably means abandoning the huge XP installed base), desktop software has to contend with a huge number of variables for each local installation.
    • Easier distribution of changes, fixes, and enhancements. This is critical for any agile & responsive business.
    • Greater possibility for interaction with the customer. You get a certain amount of feedback automatically, just through usage logs.

    Of course, there are some major downsides:

    • The customer must have a useful Internet connection at their place of work. My domain expert says that this isn’t much of an obstacle; most bakeries have them anyway for things like email. Still, it will be useful to keep offline / non-browser modes in mind: I’m thinking of printed sheets and smartphone apps as future directions.
    • The application won’t be able to take advantage of some features on the local computer. This has been getting less important over the years, but there’s still a few technologies that simply won’t work through a browser. Scanner support is probably the biggest one I can think of. However, that’s probably not important for this particular product.

    One of the biggest advantages though is that my own personal strengths lie with web-based application development. This is a big factor on a small, speculative project like this. However, it should not be the deciding factor; if the product and market do not fit the developer, then you need to either change developers or change products.

    I’ll be using a cloud-based hosting service to start out with. Cloud-based services offer the greatest scalability. In the early days of an application, this means scaling down rather than up; there won’t necessarily be enough traffic to warrant a full-size server (even a virtual server). A cloud service will also scale up nicely through the first phase of growth. After a certain level of traffic, a full server will become more cost effective — but that’s quite a ways off (and getting further away by the year). Since traffic effectively means revenue, migrating to a new server platform will be one of those “good problems to have”.

    In my next post, I put some real numbers against the architecture.

  7. Play-By-Play: Revenue Model

    May 22, 2010 by Craig

    As I mentioned in the last post, almost all of the competitors are one-time purchases. I however am leaning strongly towards a pay-as-you-go model, probably on a monthly basis. This has some major advantages for the customer and for the seller (me):

    • The customer can start using the software without a major outlay of cash. (A startup already has plenty of initial major outlays, especially in equipment-heavy industries like a bakery.) This in turn is good for the seller as it gets customers in the door earlier. The key is to engage the customer as early and as easily as possible.
    • There’s much less risk to the customer. If they do not want to use the software any more, they simply do not pay. All they’ve lost is their current fees, which are bound to be much less than a one-time purchase price. Less risk means easier engagement and more sales.
    • It’s easier for the seller to offer free trials when there’s a recurring fee — basically, the seller just has to “not recur” the fee for a period of time. Again, this reduces customer risk and thus increases sales.
    • Both the customer and the seller can easily distribute the cost/income over time. For the customer, that means matching the cost of the software directly against sales for the subscription period — making the cost/benefit that much easier to calculate. For the seller, it means easier/smoother projection of sales.

    On the other hand, my domain expert did say that it might be tough to sell a recurring-fee service to companies; she thought they’d prefer to buy it outright. It’s true that, over time, a single purchase could be cheaper than a monthly fee. Divide the purchase cost by the monthly fee and you have a “payoff period”, after which the one-time purchase price is cheaper. There’s several problems with this though:

    • The customer must remains in business for the entire payoff period for the one-time purchase to be cheaper. Depending on the pricing, that could be several years.
    • The customer must be getting benefit from the software for the entire payoff period. There’s no refunds if it stops working or gathers dust.
    • A lot of “one-time-purchase” software does, in fact, have ongoing charges. They usually take the form of “maintenance contracts”, support contracts, or additional fees for upgrades and bug fixes. The customer may be able to go without, but this often reduces the usability of the software.
    • The customer must factor in the opportunity cost of the money that they don’t spend up front.
    • The customer and/or their accountant must know how to properly amortize the price of the software for taxes. This isn’t terribly hard, but it is a bit esoteric, and it requires some planning for the future. I won’t go into details here (unless someone asks), but by and large it’s simpler and potentially more beneficial to write off a monthly fee rather than a one-time purchase.

    The revenue model has a fair amount of influence on the technical architecture, which is what I’ll discuss next.

  8. BlackBerry Apps: Looking for a Developer

    May 19, 2010 by Craig

    A potential client just approached me with an idea for a BlackBerry application. The application itself is pretty simple; the business logic is already vetted and the UI requirements aren’t complicated. However, I’m not familiar with J2ME and BlackBerry development (though I have been doing Java for years). That means my personal learning curve would put a relatively heavy burden on this project. Instead, I’d like to find someone already doing BB development and farm at least some of the work out to them.

    If you’re interested, please contact me and we’ll start talking about the details.

  9. Play-By-Play: Business Analysis Update

    May 18, 2010 by Craig

    I just got some responses to my market questions from my domain expert.

    I’m debating whether to post the raw numbers here. This sort of research is generally considered an important competitive advantage, and thus should be private. On the other hand… I didn’t really do much (besides ask a baker), and so anyone who wants to compete should be able to go out and find similar results. Furthermore: my competitive advantage will be on the implementation side, not the market analysis side.

    Still, it’s not terribly harmful to withhold publishing these numbers to the general Internet. The only thing I really lose is the credibility boost from showing my analysis process.

    So, for now, I’ll keep the numbers to myself… but if you’d like to see them and you can convince me that you’re not going to pull the rug out from under me, give me a shout and I’ll share the inside scoop with you.

    I will say this though: the numbers look far better than I was originally expecting. Even at the conservative end of my ranges, the expected value-to-customer (and thus sales price) is about 5 times what I had guessed.

    That makes me feel a lot better about taking on this project. It should be well worth the effort I’ll put in.

  10. Play-by-Play: Getting Customers

    May 16, 2010 by Craig

    This is a continuation of my previous post.

    Conversion Rate

    Here be dragons. I’ve yet to see anyone come up with reliable predictions or techniques to make a paying customer out of a potential one. In fact, a lot of what I’ve read suggests that you should not even try to estimate or manipulate this figure until you’re already in business and have some existing data to work from. Until you have real numbers, it’s all guesswork.

    The good news is that the number may be even better than you think. There have been lots of runaway successes in the Internet age. Also, this is where all of the upside comes from once you’ve built the business. Today’s battle plan is to launch the business and then use real-world experience to increase this number.

    I think that the best thing you can do at this stage in the came is to make a good, solid product that evolves to meet customer needs. The conversion rate will be evidence of that.

    Value to the Customer

    I don’t have numbers for this yet but I do know what information I want:

    • How many different products does a bakery make at a given time?
    • How many units of each product does a bakery produce in a given time period?
    • How many units does the bakery sell? The difference between this and the production number equals the waste.
    • How much on ingredients does the bakery spend? Multiply this by the waste percentage to find out the potential for waste reduction.
    • How much waste could be eliminated through better planning (via this software)? The goal is 100% but that’s probably unrealistic.

    These are the numbers to research.

    Multiply the waste reduction by the ingredient cost and you have the maximum value to the customer. Reduce that by some factor to account for inefficiency in the process. (For example: it will take some time to use the software, and that time amounts to a reduction the customer’s net value from the product).

    The price of the product must be below this number.


    A big factor in the conversion rate is the value of other players aiming for the same market. One of the reasons I was approached in the first place is that there wasn’t a lot of suitable existing products for my domain expert/first customer. The products that are out there are often:

    • Expensive. There’s one for about $250 (outright purchase), but the more common price points are $700, $1200, and $2500. That’s fairly daunting up-front cost for a small bakery who is not sure of the overall benefit.
    • Hard to use and learn. In my initial discussion, the phrase “something simple to use” came up more than once.
    • Desktop software, meaning that they need to be installed and maintained on-site. That’s not great for a business with small to none in-house expertise.
    • Have limited or no trial options before purchase. Even when there is a trial option, you have to download & install it: it’s not very smooth.
    • Ugly, both in the program itself and in the company website. Ugly suggests shoddy.

    These are all vectors that I can take advantage of.

    The whole point to getting customers, of course, is to get money from them, which will be my next post in this series.