Writing Code to Sell $200,000/Month of Cookies with Sam Eaton of Crave Cookie

Episode #166

When Sam Eaton hears a new idea, it's all he can do to contain his excitement and dive right into the code. So when his sister told him she wanted to start a cookie delivery business, there was never any question that he'd apply his indie hacker skills to help out however he could. And to great effect — today they're selling hundreds of thousand of dollars worth of cookies every month. In this episode, Sam and I discuss the advantages of target your local community as a niche, ways to leverage scarcity and social proof to increase sales, and how software engineers can best apply their skills to selling products in the real world.

Show Notes

  1. 5

    I have just listened your interview really interesting!

    First of all impressive work! but I couldn't resist visiting your page and analyze it from the efficiency / speed POV:

    · Your static server uses http1 this limits the amount of parallel threads used by the browser resulting in a slower load.
    · Your API is http2 but without gzip enabled.
    · PNG and SVG can be compressed with almost no lost, down is a link with all these assets compressed (285KB in savings)
    · Do you really need 18 variations of the same font? It's 1MB or 43% of all resources downloaded.

    All of these optimizations not only makes your site load faster but could impact your SERP rankings:

    Assets compressed:

    1. 1

      nice! I need to be reminded of this kind of stuff.

      Optimizing page speed was something I've done extensively at previous companies, but I just haven't had the time to do it for Crave.

      I'm mostly focused on UX/Product optimizations at this stage. I made a decision to not focus on every little engineering improvement. It would have been a waste of time to focus on that if the company never got off the ground anyway.

      But yeah, now, it might make sense to add it to the backlog.

      All those assets are being served from a CDN so i just have to put a compression layer over it.

    2. 1

      Nice analysis. I learned something new from it. =)

  2. 2

    Hey @DevMunchies. I got very interested in Crystal when you mentioned it.

    I’ve read the language reference and I dabbled with it a bit on the command line.

    I’m a bit discouraged about the seeming state of 3rd party stuff. Most popular shards have not been updated in years and Kemal for example has at least one glaring issue (https://github.com/kemalcr/kemal/issues/489).

    Can you share your experience with Crystal in more detail please? Using the language in practice, issues or hurdles, etc...

    PS: The block / proc / closure syntax seems very all-over-the-place, compared Swift or Typescript. How is it in practice?

  3. 2

    Great to listen to this episode where technology and physical business are tightly knit.

  4. 2

    Loved that podcast, thanks!

  5. 1

    i have a script can u code a trading bot mmmm..

  6. 1

    @DevMunchies loved the episode man! Question for you: you mentioned your previous project gamify (sp?) - I love the concept. Currently trying to think about how to drive more of our users toward active status and something like that would be incredible! Is there a public website for it or github repository?

  7. 1

    Hii thank you for sharing! your website is so impressively fast! Any suggestions for making a fast wordpress website? Also what if you were in a location where website payment penetration is still quite low. Would you still use a website to sell cookies? @DevMunchies

  8. 1

    @DevMunchies loved the interview, thank you so much. Such a fascinating example of using constraints (local delivery only) to your advantage and optimising for user experience. I'm in awe of what you and your sister have built.

    I have a technical questions if that's ok. I was wondering in Crystal lang are you using either of these features: a) macros b) concurrency primitives (like channels etc.)? Or is it the case that you could have used any backend language to achieve the same outcomes?

    Thanks again for sharing, really appreciate this. 🙏

    1. 1

      Thanks for the kind words. 🤘

      I could have used any statically typed, compiled language.
      I say this because as a single engineer on a fast growing code base, I would have produced too many bugs had it been dynamic. I have already done several major refactors which would have been very ugly without strict typing. (Linting isn’t enough)
      For example, I’m forced to explicitly map how all SQL query results map to classes or how I parse JSON payloads. The logic I have to write to parse POST request bodies are verbose but it’s worth it IMO.
      My second choice would have probably been OCaml (or F#), Go, or a JVM language, or even elixir (even though it’s not statically typed).

      1. 1

        You're brave, I get scared with these kinds of technologies that I'm going to hit serious compiler bugs once I get deep into the project, not to mention the buggy or scarce important tooling. I devoted a lot of time to Elm before realising its shortcomings.

        I've been using Haskell a lot for the past couple of years and the GHC compiler feels very mature (it's older than Java), but still a little bit scary to rely on it completely. I guess in your case, worst case scenario you can quickly break out functionality into another language and connect through HTTP or AMQP.

        Anyway, technology aside nice work on the business. I am jealous!

      2. 1

        Fascinating, thank you for the detailed reply.

        I very much understand the appreciation of discipline. I'm a Clojure[Script] user myself and while it isn't statically typed it does enforce discipline around mutation and side effects which I have found to be hugely beneficial for the same reason - way less bugs.

        Best of luck and I hope you find continued success with this and future projects!