• ManyMailers Rails Plugin

    March 12, 2008 by Chris Wanstrath 1 comment

    If you’re using AuthSMTP like we are, you may be interested in the new ManyMailers Rails plugin. With it, you can use multiple mail servers in your app.


    ProjectMailer.with_settings(:internal) do |mailer|
      mailer.deliver_notification(blah)
    end
    

    Looks cool!

  • Err Free on the Rails Podcast

    February 23, 2008 by PJ Hyett 7 comments

    In case you hadn’t heard, we were interviewed by Geoffrey Grosenbach for “the” Ruby on Rails Podcast a couple of weeks ago:

    Err Free — the Ruby on Rails Podcast

    Let us know what you think! Chris and I have thought about putting together a regular show that would involve more arguing about javascript libraries and things of that sort.

  • Err Free World Tour

    February 11, 2008 by Chris Wanstrath 8 comments

    We just finished booking a few flights and thought now was a good time to share our speaking schedule so far.

    Philly Emerging Tech – March 26-27, Philadelphia

    I’ll be speaking about ‘The Launch: Bringing a Rails Site to Life.’ This should be a great talk, and a great conference, for anyone interested in real life Rails or moving from Java to Rails.

    Goruco – April 26, New York City

    Goruco was a huge success last year, one of the regional Ruby conferences that had everyone talking. This year I’m honored to be one of the speakers. I’ll be talking about Ambition and Ruby’s parse tree – a talk that will touch on Rubinius, JRuby, Io, Sake, map/reduce, and more. Get a ticket if you can.

    RailsConf – May 29-June 1, Portland

    PJ and I will both be speaking at RailsConf this year. We’ll be part of a panel titled The Profitable Programmer, and I’ll also be doing a version of my The Launch talk.

    RubyFringe – July 18-20, Toronto

    An indie conference billed as “deep nerd tech with punk rock spirit,” the speaker list seems poised to deliver on that promise. I’ve been asked to talk about Ambition but hate doing what I’m told: expect parse trees, githubs, ruby2rubys, and hacks with a ‘Do Not Try This At Home’ disclaimer.

    Come say hi if you attend one of these conferences. Make sure you get both business cards. See you there.

  • Billing on the Brain: Credit Card Storage

    February 07, 2008 by PJ Hyett 8 comments

    FamSpam is a subscription-based service, so we had to come up with a solution for billing customers every month. One solution would be to mail them monthly invoices like a credit card statement. The other, not completely insane solution, is to just store their credit card information and use it when it comes time to bill them each month.

    How does one store credit card info?

    You have two options: store it yourself or pay someone to store it for you. For us, storing credit card information on our servers was out of the question. The technical and legal hurdles are enormous, and just like our stance on using someone to send our email, this is absolutely another service that’s worth paying for.

    Where does one store credit card info?

    The simplest solution is to find a merchant that also has some sort of secure ‘vault’ service. The concept is straightforward: you give them the customer’s credit card info, they give you back a vault id that you store, and then you use that vault id anytime you need to bill them.

    Code on Dynamite?

    ActiveMerchant has support built-in for dealing with vaults, so using them works something like the following:

    Step 1: Bill using credit card (and storing card in vault)
    creditcard = ActiveMerchant::Billing::CreditCard.new(
      :type       => 'visa',
      :number     => '4242424242424242',
      :month      => 8,
      :year       => 2009,
    )
    
    gateway.purchase(1000, creditcard, :store => true)
    
    Step 2: Bill using vault id
    gateway.purchase(1000, vaultid)
    

    Not only does ActiveMerchant have a great API, it also includes wrappers for over two dozen gateways. Give it a good look before you roll your own code.

    But, wait, there’s more!

    Next up is how to handle subscriptions now that we know how to store credit cards, the suspense is killing me!

  • Billing on the Brain: Integration

    February 06, 2008 by PJ Hyett 1 comment

    Billing is one of those things no one wants to work on because it has nothing to do with your core business, but the inevitability that your app actually has to make money forces you to worry about it at some point.

    There are a number of problems when building a billing system that you’ll have to think about before proceeding:

    • site integration or third party
    • dealing with credit card storage
    • handling subscriptions
    • selecting a gateway and merchant

    Each of these bullets will determine how you setup your billing system, and I’ll be addressing them one at a time how we did it on FamSpam.

    I originally wrote this as one massive article, but I’m guilty of losing focus quickly, so I thought it would be more effective if I divided it up and spent some time explaining each section in depth.

    One final disclaimer is that a lot of this is opinion-based and you’re welcome to tell me I’m wrong, but let’s keep it civil.

    Site integration

    Chris and I decided from the get-go that we weren’t interested in redirecting our customers to a third party site to enter in their credit card info.

    The first problem is services like Paypal and Amazon FPS require accounts. We already asked them to signup to use FamSpam, why would we ask them to signup for another service just so they could paid to use ours? Adding a Paypal payment option in the future to provide our customers more flexibility is a real possibility, but it was important for us to support credit cards first.

    Billing

    Reason number two is that being able to integrate your billing form looks extremely professional and allows you to organize the page however you wish (as long as the merchant’s guidelines are met). I’m certainly biased, but I think FamSpam’s billing page is the bee’s knees.

    The last reason is that I’ve heard recently of intermittent problems with Paypal’s service. Issues can arise with any service, but you’d think Paypal is a site you could count on.

    Any breakdowns in communication between your service, the merchant, and the customer is scary stuff. Building a solid rapport with our merchant (how easy would it be for you to email Paypal’s CEO?) has made me feel immensely more secure that if a billing situation were to arise that it would be diagnosed and corrected quickly.

    Stop by tomorrow for Dynamite’s next installment of ‘Billing on Brain.’

  • Sexy Stats

    January 28, 2008 by Chris Wanstrath 2 comments

    While Google Analytics is a great for so many things, I’ve always found it lacking around the referral department. It’s wonderful at its namesake, analyzing traffic, but doesn’t really help when you want to know what people are saying about your idea, product, or blog post.

    Enter GetClicky. For over a year now this has been one of my favorite web apps. Its simple interface and up-to-the-minute information never fail to satisfy my buzz-hunger.

    Err the Blog on GetClicky

    At a glance, you see everything you want: biggest referrers, most popular content, and a user summary. What it excels at is letting you know what content is popular and why. It even has RSS feeds to this end, as well as a ‘digg spy’ style feed of visitors. See who is coming to your site, and from where, as it happens.

    Take their free trial for a spin and see what you think.

  • The Business of Business Cards

    January 15, 2008 by Chris Wanstrath 1 comment

    A few people have asked where we got our business cards, which is a fair question. There are a lot of options out there.

    We went with Overnight Prints and were very happy with our purchase. Can’t beat bright colors, dual side printing, and fast delivery.

    IMG 0441

    We tried to put only the vital, permanent information on our cards. Anyone can Google our names or the company name to find out all the information they need.

    Plus, that information won’t go out of date. I’d hate to have 500 business cards with my old cell phone number on them.

    IMG 0440

    (And yes, we have complimentary business cards. You gotta collect ‘em all.)

  • On Innovating

    January 14, 2008 by Chris Wanstrath 1 comment

    A friend of mine shared this great talk by Guy Kawasaki on innovation over the weekend.

    I really love his speaking style. As he explains, this talk is broken down into 10 points – you always have a sense of time and context because you know which number he’s discussing. The numbering system also gives a clear and convenient manner of discussing his talk.

    Speaking of which, I really like his fifth point: “Don’t worry, be crappy.” Ship it, then test. Get something out the door quickly, respond to feedback. You’re never going to get everything right (especially after spending so much time so close to your own creation). See how other people are using it, what they want, and decide where to take it from there. But don’t sit on it. Get something out there.

  • Guaranteeing Email Delivery

    January 10, 2008 by PJ Hyett 5 comments

    Making sure thousands of emails get to their destination is a full-time job. A job that would have been a huge distraction from the real problem FamSpam is solving.

    What’s a site to do?

    Pay someone to worry for you.

    We utilize AuthSMTP for all of FamSpam’s outgoing email. Their prices are reasonable and we hear of only the occasional email ending up in a junk-mail folder. That’s always going to be an uphill battle, but the war is won as long as the person receives the email in some fashion or another.

    Figuring out how to stay on an ISP’s good side so our domain isn’t blacklisted is something neither Chris nor I are interested in learning how to master, so we’re happy to offload this problem to someone else.

    Building the best product we can is our ultimate goal, if we need to spend a little more along the way make sure that happens, so be it.

  • Write What You Know

    January 09, 2008 by Chris Wanstrath 3 comments

    As a wee schoolchild, I was told over and over to “write what you know.” It’s easier to write well, and convincingly, if you are familiar with the subject matter. That’s the idea, at least.

    We don’t think websites are any different.

    Many of the sites we use on a daily basis were obviously created by people who needed them. A perfect example is Lighthouse, a beautiful and simple issue tracker. While I can’t claim to know the motivations behind its creation, I’d wager the guys asked “what do we need?” rather than “what would be a big hit?” After all, they use Lighthouse to keep track of itself.

    FamSpam started because our families were having trouble keeping in touch on a regular basis. It was getting done, but it was a tad sloppy. We needed a clean, simple, and efficient way to keep in touch with our families.

    While it’s great to scratch your own itch, the advantages of creating something you need go much deeper. Because we wanted FamSpam for our families we were able to use them as the pre-beta test group. Anything they didn’t understand, we tweaked. Any good ideas they had, we implemented. Any wording they disliked, we removed.

    When you’re the target audience, useful new features become obvious. Just the other day we added photo slideshows to FamSpam. Why? Because my mom uploaded 17 photos from Christmas and I wanted to see them in a slideshow, without having to click through each one.

    So while it may seem lucrative to create a new social network for Alaskan King Crabs, you might be better off focusing on a site you’d actually use every day. That is, unless you’re a delicious Alaskan King Crab. In that case, crab on.

  • Accounting the Books

    January 07, 2008 by Chris Wanstrath 4 comments

    Are you running a small business and doing your own accounting? Yes?

    Why?

    A web professional keeping their own books is like Uncle Roger ‘making websites’ in Dreamweaver—the job gets done, but probably not in the most cost (or time) efficient manner.

    Break it Down

    Finding someone to handle money correctly is the number one piece of advice PJ and I received when starting our company. “Send your bills to your accountant and forget about it. It’s worth the cost.”

    And really, it’s the number one piece of advice we’d give anyone else starting their own business. Here’s the math:

    Let’s say you’re a talented, solo web developer charging $85/hr. Following that, there’s a golden accountant with a winning personality available charging $70/hr. Without getting into taxes and details, it’s easy to see this is a deal: a good accountant (hopefully) is a CPA, possible a Certified Tax Preparer, too, and has formal training which you do not. They’ve experienced a whole bunch of weird situations, shortcuts, and other nuggets garnered from time spent on the job which you can use to your advantage.

    Would you pay someone with little to no experience $85/hr to build your website? Of course not, so why are you paying someone with little to no experience (yourself) $85/hr to keep your books?

    What’s it for?

    We try to let our accounting firm handle everything: personal taxes, business taxes, expenses, our company credit, subcontractor invoicing, and client invoicing. We work with a few people and think they’re all amazing. Swift, too.

    While we could be doing this stuff ourselves, we’d much rather pay professionals and free up time to do more work or afford more non-billable hours for things like this blog post.

    Most importantly, our accountant answers any questions we have. And we have a lot. While we’re still learning the ropes, they’ve seen it all before and have never failed to help us out with a prompt solution.

    Finding the Dream Date

    The hardest part, of course, is finding an accountant who will work with you personally and answer any questions you have. If you’re in San Francisco, we’d heartily recommend Keeping Your Balance – they take great care of us.

    Yelp, believe it or not, is a good resource for this type of thing, but no replacement for your friends and colleagues. Don’t be afraid to ask around. There are many small business forums on the Internet, some even Rails-specific, which can help get you in touch with like minded individuals.

    Accounting for Change

    We reiterate our point because, well, it’s something we need to remember. Often we feel like we can, and therefor should, do everything. “Why would I pay someone to keep track of my invoices? I can do that.”

    But, of course, time is money. Spend it wisely.

  • Lightbox, Facebook style

    January 04, 2008 by Chris Wanstrath 3 comments

    We use popups all over FamSpam, be it for displaying photos or our privacy policy. When the stock Lightbox library we were using began to get boring, we quickly threw together our own version based on Facebook’s look and feel. The result became Facebox, a jQuery Lightbox library in the Facebook style.

    It’s even got its own website: http://famspam.com/facebox. Check it out, take ‘er for a spin, and enjoy.

  • Introducing FamSpam

    January 04, 2008 by PJ Hyett 0 comments

    What started as a quick app we wanted to build for our families turned into a full-blown service we wanted to share with the world.

    The problem is simple: emailing your entire family needs to be easy enough for even the least computer-savvy. The answer is even simpler: FamSpam.

    If my mom wants to email her children, she only needs to remember one email: hyett@famspam.com. The fact that she can also search our family’s conversations, view photos attached to any email, and post messages using our family’s private website is just gravy.

    Hopefully you enjoy FamSpam as much as our families do. Try it and find out!

  • dynamite!

    The Err Free Weblog, wherein we discuss the finer points of business, coding, our products and, for better or worse, the occasional rounded corner.

  • Advertisement
  • products

    FamSpam
    The easiest way to stay in touch with the people you love.
    Err the Blog
    Our Ruby and Rails observations and experimentations.
Original Content ©2008 Err Free, LLC
contact us

Err Free

Contact Us

We're only an email away: work@errfree.com

Got a cool new project, speaking gig, or top secret idea you think we'd be interested in? Hit us up.