# John Nunemaker > Thoughts on building software and software businesses. Owner of Box Out Sports and Very Good Software (Fireside, Flipper). Previously GitHub. Creator of HTTParty, Flipper, and more. John Nunemaker is a programmer and business owner in South Bend, Indiana. He owns Box Out Sports (sports graphics software) and Very Good Software (Fireside podcast hosting and Flipper Cloud feature flags). He worked at GitHub for seven years on performance and internal metrics. He created the HTTParty and Flipper Ruby gems, among many other open source projects. ## Pages - [About](https://www.johnnunemaker.com/about/): When not playing basketball or tinkering with watches, I work at Box Out Sports and Very Good Software (owners of Fireside and Flipper) as a… - [Barn](https://www.johnnunemaker.com/barn/): I love basketball. From playing in the snow with gloves on as a kid to noon hoops 3x/week in my 40's, it's my favorite game. A few years back I had a dream… - [Cave](https://www.johnnunemaker.com/cave/): In 2022 I became obsessed with mechanical watches. My friend told me that South Bend, IN (where I live) had a watch company back in the day. I did some… - [HTTParty](https://www.johnnunemaker.com/httparty/): Makes http fun again! Ain't no party like a httparty [https://github.com/jnunemaker/httparty], because a httparty [https://github.com/jnunemaker/httparty]… - [Welcome!](https://www.johnnunemaker.com/welcome/): This is how you made me feel when I saw the notification you gave me your email. Next time I post anything, you'll be the first to know. For now, you'll… ## Articles - [Code with Jason: People Buy From People](https://www.johnnunemaker.com/code-with-jason-people-buy-from-people/) (2026-06-01): I went on Code with Jason for the second time. Jason and I got into the Fireside acquisition, how to actually find and finance a business to buy, why… - [IndieRails Podcast: The Conductor](https://www.johnnunemaker.com/indierails-podcast-the-conductor/) (2026-03-19): I hopped on IndieRails with Jess and Jeremy (again). We covered a lot of ground in about 90 minutes. Quick business catch up and then dove into how AI has… - [Rails Business Podcast (again)](https://www.johnnunemaker.com/rails-business-podcast-again/) (2026-03-05): How AI has changed my day-to-day as a developer. - [Conducting Rails](https://www.johnnunemaker.com/conducting-rails/) (2026-01-30): I've been using @conductor_build heavily for weeks now and it's completely changed how I ship Ruby on Rails code when working with Claude models. The… - [Rooted & Reaching Podcast Interview](https://www.johnnunemaker.com/rooted-reaching-podcast-interview/) (2026-01-23): I recently sat down with Marty Mechtenberg on the Rooted and Reaching podcast to talk about my entrepreneurial journey, from struggling through my first… - [What makes you different](https://www.johnnunemaker.com/what-makes-you-different/) (2025-10-13): Something that's been on my mind lately: Why is a customer going to choose my product? There's tens to hundreds or even thousands (looking at you CRM's) of… - [Self-Made is a Myth Podcast](https://www.johnnunemaker.com/self-made-is-a-myth-podcast/) (2025-10-01): Podcast interview where I share my journey building lasting SaaS businesses, the power of partnerships, and why I'm obsessed with onboarding, risk reduction, and hiring ‘batteries included’ people. - [Giant Robots](https://www.johnnunemaker.com/giant-robots/) (2025-05-29): A few weeks back I joined Chad on his Giant Robots podcast to talk Ruby, Rails and a bit of business – including our acquisition of Fireside last year. The… - [Rails Business Podcast](https://www.johnnunemaker.com/rails-business-podcast/) (2025-04-15): I had a nice chat with Brendan and Ryan on the Rails Business podcast a few weeks ago and now its live! Search for "Rails Business" in your favorite podcast… - [Ruby on Rails Podcast: Taking over Fireside.fm](https://www.johnnunemaker.com/ruby-on-rails-podcast-taking-over-fireside-fm/) (2025-01-22): I was stoked when I discovered that the Ruby on Rails podcast is hosted on our platform – fireside.fm. So I reached out to Elise for feedback and to… - [Episode #4](https://www.johnnunemaker.com/episode-4/) (2025-01-09): It's out and it's stout. Actually, I don't know if it's stout or not. I just like to rhyme (all the time). My 3 Fav Quotes “What if instead of discounts, we… - [Episode #3](https://www.johnnunemaker.com/episode-3/) (2024-12-31): For those that haven't subscribed to the fireside blog or the podcast, I figured I'd update here as well. We released episode #3 on Mastering Prioritization… - [Episode #2](https://www.johnnunemaker.com/episode-2/) (2024-12-17): Episode #1 went out last Thursday. Now here we are on Tuesday and ANOTHER EPISODE FOR YOU. I know right?! Christmas came early this year. On today's… - [Episode #1](https://www.johnnunemaker.com/episode-1/) (2024-12-12): We did it! The Fireside crew went through the entire process of setting up a podcast and recording our first episodes. #1 is live wherever you enjoy… - [Shrinking a Postgres Table](https://www.johnnunemaker.com/shrinking-a-postgres-table/) (2024-11-28): Ok folks, this is kind of a weird one. I'm going to put it in the "you won't ever need this, but if you do, you are going to be glad I wrote this up for ya"… - [Founder Quest: Acquiring Fireside](https://www.johnnunemaker.com/founder-quest-acquiring-fireside/) (2024-10-11): Last, but not least for this week, I was on Founder Quest. I'm doing my best third wheel impression over there and appreciate that Ben and Josh haven't… - [The Moneyball approach](https://www.johnnunemaker.com/the-moneyball-approach/) (2024-10-10): I joined Adam and Jerod to share my new thesis for acquiring Rails based SaaS apps. The conversation was great! This new moneyball approach (dubbed so by… - [Code and the Coding Coders who Code it](https://www.johnnunemaker.com/code-and-the-coding-coders-who-code-it/) (2024-10-09): Last week Drew invited me on his podcast. I loved the format (what are you working on, what are your blockers, what have you learned recently) and suspect… - [How to Find a Business Partner](https://www.johnnunemaker.com/how-to-find-a-business-partner/) (2024-10-01): I've had business partners for every business I've been a part of. Yet, I've never asked myself "Why?". Yesterday someone did. You’ve been fairly prolific… - [Acquiring Fireside](https://www.johnnunemaker.com/acquiring-fireside/) (2024-09-27): First, let's set the scene. It's Saturday, July 20th in South Bend, Indiana. My kids are playing in the driveway (yes they left their toys out) while my… - [Founder Quest: Writing and Content Marketing for Devs](https://www.johnnunemaker.com/founder-quest-writing-and-content-marketing-for-devs/) (2024-05-27): Another week and another podcast wthe great group at Honeybadger. This time we covered writing and I think it turned out great. The first 15 minutes we… - [Founder Quest: RailsConf Recap](https://www.johnnunemaker.com/founder-quest-railsconf-recap/) (2024-05-22): Last week I joined Ben and Josh on Founder Quest to recap RailsConf 2024. As you already know, we had a blast at RailsConf. But even if you read the… - [RailsConf 2024](https://www.johnnunemaker.com/railsconf-2024/) (2024-05-16): Last week I went to my first RailsConf in forever (2010). That's a decade and a half (almost)! I saw old friends, met more recent online-only friends (in… - [Cushion vs Flow](https://www.johnnunemaker.com/cushion-vs-flow/) (2024-04-16): Everything in money comes down to cushion vs flow. Cushion is cash (or anything easily and quickly convertible to cash). Flow is money in (and out). To feel… - [Maintainable: How Scary is this Change?](https://www.johnnunemaker.com/maintainable-how-scary-is-this-change/) (2024-02-13): 🎙 Robbie had me on the Maintainable podcast to chat about maintainable software. The description on the site summarizes it best: Robby has a conversation… - [Ruby Rogues: Flipper Cloud and the Future of Feature Flags](https://www.johnnunemaker.com/flipper-cloud-and-the-future-of-feature-flags/) (2024-01-26): 🎙 A few weeks ago I joined the Ruby Rogues to talk about feature flags and Flipper Cloud. They released the episode this morning. This is the whole history… - [Indie Rails Podcast](https://www.johnnunemaker.com/indie-rails/) (2023-11-15): I did a podcast interview with Jeremy and Jess from IndieRails. We talked through a lot of past and a little future – from my first website to plans for… - [Flipper 1.0](https://www.johnnunemaker.com/flipper-1-0/) (2023-08-23): I've been writing ruby for nearly 20 years and never released a 1.0 gem... until today. - [How to benchmark your ruby gem](https://www.johnnunemaker.com/how-to-benchmark-your-ruby-gem/) (2023-03-22): With a folder, some scripts, and some tools, you can make your ruby gem/code faster. Measure, improve and repeat. - [Partying Hard with Remote Ruby](https://www.johnnunemaker.com/partying-hard-with-remote-ruby/) (2022-02-19): This podcast covered a variety of topics, but primarily focused on Flipper. In fact, it was probably the most Flipper I've talked on a podcast. I also let… - [Rebuttal & Addendum to "Build a minimal feature flags manager in under an hour"](https://www.johnnunemaker.com/hourly-feature-flags/) (2022-01-27): Last week, a post titled "Build a minimal feature flags manager in under an hour [https://remimercier.com/minimal-feature-flags-manager/]" was making the… - [Rails: Postgres Native Partitioning](https://www.johnnunemaker.com/rails-postgres-native-partitioning/) (2022-01-07): Get your hands dirty with some SQL and native postgres partitioning. - [Ruby: How to Run a Rack app in a Background Thread](https://www.johnnunemaker.com/ruby-rack-background-thread/) (2022-01-07): Stubbing and mocking are fine, but sometimes you want to test full integration. This will help you get your main thread http client talking to your rack app in another thread. - [Code with Jason Podcast](https://www.johnnunemaker.com/code-with-jason-podcast/) (2021-10-06): This interview was less on the technical side and more on the working at a big company and learning about stock/options/taxes. > In this one I talk with… - [Founders Talk: The acquisition of a lifetime](https://www.johnnunemaker.com/founders-talk/) (2021-08-26): After two years of lazy scheduling attempts and conflicts, Adam and I sat down to chat about Speaker Deck, GitHub, Microsoft and more. - [Feature Flags: Not Just for Big Teams or Big Features](https://www.johnnunemaker.com/feature-flags-for-tiny-bits/) (2021-06-21): The query, cache, code, feature flag, graph and point: control your code, even the tiny bits. - [Rails Feature Flags: Now So Flippin' Easy You Won't Believe It](https://www.johnnunemaker.com/rails-feature-flags/) (2021-05-10): Well friends today is a great day. I'm writing to let you know that Flipper 0.21 is hot off the press. And. It. Is. Awesome. Seriously, read on. - [Why you should blog in 2021](https://www.johnnunemaker.com/why-you-should-write-in-2021/) (2021-04-22): Seemingly everyone I know has given up on blogging. I'm not really sure why. Maybe because doing it well is hard? Regardless, it's still super valuable. - [Ruby Rogues: How to Reduce Friction at the Authorization Layer](https://www.johnnunemaker.com/ruby-rogues-authorization/) (2021-04-21): 🎙 This week I joined the Ruby Rogues to talk about rails and authorization… - [How to build an app, get acquired by GitHub, buy an app back from GitHub and then sell it again](https://www.johnnunemaker.com/speakerdeck/) (2021-04-16): Let's set the scene. The year was 2010. Twitter was exploding. Instagram just became a thing. Myspace was formally dead. Speaking of formal, my attire was… - [Rails: How to Send and Receive Webhooks](https://www.johnnunemaker.com/webhooks/) (2021-03-23): This covers the joys and pains of a fully functional webhook system. Along the way I practice shower driven development to solve my problems. - [Rails: How to Reduce Friction at the Authorization Layer](https://www.johnnunemaker.com/rails-authorization/) (2021-03-15): 💡 That's when it hit me. Yes or no are core to authorization. But what if I also included why? - [Slow & Steady: Building Products for Fun & Profit](https://www.johnnunemaker.com/slow-steady/) (2021-03-10): Another week, another podcast for ya to listen to: taking on behemoths, standardizing tech across multiple products, getting acquired by GitHub (over a handshake), acquiring Speaker Deck back from GitHub, and more. - [Resilience in Ruby: Shell Commands](https://www.johnnunemaker.com/resilience-in-ruby-shell-commands/) (2021-03-06): Over the past year I've made myself real friendly with GitHub::Result and I'm loving it. This post is a big intro on how to make your Ruby code more resilient with GitHub::Result leading the way. - [FounderQuest: Talking Startups and Pricing Strategies](https://www.johnnunemaker.com/founderquest-interview/) (2021-02-26): I got to use my new Yeti mic for an interview [https://www.founderquestpodcast.com/episodes/talking-startups-and-pricing-strategies-with-john-nunemaker] on… - [Flipper.enable(☁️)](https://www.johnnunemaker.com/flipper-cloud-enabled/) (2021-02-25): Even when you have a fully functioning product, there are a few hurdles to launching it. Read on to learn how we tackled them. - [Rails: Postgres Partial Indexing](https://www.johnnunemaker.com/rails-postgres-partial-indexing/) (2021-01-23): Postgres has a nice feature where you can index only the values you want to query on. Today I learned that Rails has a nice shortcut for taking advantage of said feature. - [Rails: Following and Notifications](https://www.johnnunemaker.com/rails-following-and-notifications/) (2020-12-28): A month or so ago we released following and email notifications for Speaker Deck. I thought I'd share how we whipped this together and why we did it the way we did. The end result is a stable notification system that gets the job done and will be easy to grow as Speaker Deck continues to grow. - [Rails: Easy Sitemaps](https://www.johnnunemaker.com/rails-easy-sitemaps/) (2020-12-21): I've been doing some reading and learning about SEO of late. An easy thing to do is to create a sitemap and submit it to google's search console. Here is how to do that with Rails. - [Rails: insert_all and upsert_all](https://www.johnnunemaker.com/rails-insert_all-and-upsert_all/) (2020-12-16): TIL something new about Rails. You can now use insert_all and upsert_all for efficient writes. But that's not all. Read on for what "just worked" and what didn't. - [Imgproxy is Amazing](https://www.johnnunemaker.com/imgproxy/) (2020-11-26): One of the cruftiest pieces of the Box Out [https://boxoutsports.com] rails app was file previews (for customer uploads and created graphics). Background… - [More Descriptive Flipping](https://www.johnnunemaker.com/more-descriptive-flipping/) (2020-06-25): The flipper ui just got a fresh coat of paint and I am here to tell you about it. From adding descriptions to your features to bringing the OSS UI more in line with flippercloud.io, flipping features just got even better. - [Never Query the Same Thing More Than Once](https://www.johnnunemaker.com/never-query-the-same-thing-more-than-once/) (2020-05-17): In a recent post, I talked about how I used Postgres DISTINCT ON to remove a pesky N+1 query. That was actually one of the final touches in immproving the… - [Limit Everything: Timeouts for Shell Commands in Ruby](https://www.johnnunemaker.com/limit-everything-timeouts-for-commands-in-ruby/) (2020-05-11): I have talked about limiting everything [https://www.johnnunemaker.com/database-performance-simplified/] before, but I love examples, so I thought I would start bringing… - [Postgres Distinct On](https://www.johnnunemaker.com/postgres-distinct-on/) (2020-04-30): By day, I am a mild mannered owner/programmer at Box Out Sports [https://boxoutsports.com]. By no means do you need to understand all that we do there or… - [Flipper Cloud: Environments](https://www.johnnunemaker.com/flipper-cloud-environments/) (2020-04-25): I will be honest with you. I really miss writing. There is something about organizing the ideas and work swirling around in your head into a blog post that… - [Flippin' and Rollin'](https://www.johnnunemaker.com/flippin-and-rollin/) (2018-01-23): Two months ago I wrote up a doozy of a post about flippin’ feature at runtime [https://www.johnnunemaker.com/flippin-features-at-runtime/]. Since then, the contributions to… - [FlipperCloud.io: Why?](https://www.johnnunemaker.com/featureflipper-com-why/) (2017-12-09): I have moleskines full of ideas. When I worked at Notre Dame [https://www.nd.edu] (circa 2006), making products was all the rage. I spent all my free time… - [Flippin' Features at Runtime](https://www.johnnunemaker.com/flippin-features-at-runtime/) (2017-11-08): Since it has been nearly a year since I’ve written about Flipper [http://www.railstips.org/blog/archives/2016/12/08/flipper-preloading/] (a ruby gem for… - [Resilience in Ruby: Handling Failure](https://www.johnnunemaker.com/resilience-in-ruby/) (2017-04-18): For the second half of 2014 and 2015, most of my time at GitHub was spent working on moving the notifications feature off the primary MySQL cluster on to a… - [Fewer and Faster](https://www.johnnunemaker.com/fewer-and-faster/) (2016-06-05): Sometimes I feel developers think that performance is a dark art. It is not. In my experience, well performing systems come down to this: fewer and faster.… - [Tuesday Randoms: 2016-04-19](https://www.johnnunemaker.com/tuesday-randoms-2016-04-19/) (2016-04-19): The Error Model [http://joeduffyblog.com/2016/02/07/the-error-model/]. I’ve been doing a lot of resiliency related things lately and that means dealing with… - [Tuesday Randoms: 2016-01-19](https://www.johnnunemaker.com/tuesday-randoms-2016-01-18/) (2016-01-18): Fail at Scale [http://queue.acm.org/detail.cfm?id=2839461] Great post about failure at Facebook. My favorite parts were controlled delay and adaptive LIFO.… - [Anti-Decay Programming](https://www.johnnunemaker.com/anti-decay-programming/) (2016-01-11): de•cay noun - the state or process of rotting or decomposition. Let us kick off the new year with a lovely post on decay. All systems decay. Even when you… - [Database Performance Simplified](https://www.johnnunemaker.com/database-performance-simplified/) (2015-12-23): A general model (or guidelines to live by) that won’t solve all your problems, but will keep you from getting into trouble overly quickly. - [All Requests Are Not Equal](https://www.johnnunemaker.com/all-requests-are-not-equal/) (2015-12-13): The norm for rate limiting these days seems to be based on the number of requests a consumer can make in a given time window. The problem with this is that… - [Saturday Randoms 2015-12-07](https://www.johnnunemaker.com/saturday-randoms-2015-12-12/) (2015-12-12): Previously [https://www.johnnunemaker.com/monday-randoms-2015-11-02/]. Quotes > The true purpose of testing, just like the true purpose of design, is to reduce costs. Sandi… - [Monday Randoms: 2015-11-02](https://www.johnnunemaker.com/monday-randoms-2015-11-02/) (2015-11-02): Previously [https://www.johnnunemaker.com/wednesday-randoms-2015-09-30/]. Resiliency Resiliency checklist [http://monkey.org/~marius/checklist.pdf] A fantastic checklist… - [Wednesday Randoms: 2015-09-30](https://www.johnnunemaker.com/wednesday-randoms-2015-09-30/) (2015-09-30): Previously [https://www.johnnunemaker.com/saturday-randoms-2015-09-19/]. Data Building DistributedLog: Twitter’s high-performance replicated log service… - [When and Why Your Code Starts to Smell Bad](https://www.johnnunemaker.com/when-and-why-your-code-start-to-smell-bad/) (2015-09-28): I enjoy reading papers and try to on a regular basis. I actually read them old school style. I print them and then use a pen to underline the quoteables… - [Saturday Randoms: 2015-09-19](https://www.johnnunemaker.com/saturday-randoms-2015-09-19/) (2015-09-19): I read a lot. I curate what I read into likes in instapaper [https://instapaper.com] and bookmarks in pinboard [https://pinboard.in]. It hit me the other… - [Flipper: Insanely Easy Feature Flags for Ruby](https://www.johnnunemaker.com/flipper/) (2015-06-21): Nearly three years ago, I started work on Flipper. Even though there were other feature flipping libraries out there at the time, most notably rollout, I decided to whip up my own. Repeating others is, after all, one of the better ways to level up your game. - [Atom: A Hackable Text Editor for the 21st Century](https://www.johnnunemaker.com/atom-a-hackable-text-editor-for-the-21st-century/) (2014-12-19): Last night at Local Variables [http://www.meetup.com/localvariables/events/219176565/] I presented on Atom [http://atom.io], GitHub’s relatively new text… - [Pain and Programming](https://www.johnnunemaker.com/pain-and-programming/) (2014-03-03): In May of 2013, my hand pain was so intense I took nearly a month off work. When I started back at work and almost immediately felt pain again, I knew the… - [Analytics at GitHub](https://www.johnnunemaker.com/analytics-at-github/) (2014-02-24): In the interest of getting back into writing, I want to break the seal with a simple “what have I been up to and thinking about lately” style post.… - [Who will you be?](https://www.johnnunemaker.com/who-will-you-be/) (2014-01-21): I have been thinking about this a lot lately. Person #1 Start. Start. Start. Start. Start. Start. Start. Start. Start. Start. Start. Start. Start. Start.…