The first time I ever wrote a tutorial was out of frustration.
I had spent a summer building an app that I hated and was in the process of shutting it down. I didn't want to leave the few people using it hanging and wanted to add an export feature so they could download their data.
Stack Overflow? Nothing.
Google searches? Left me empty handed.
On the verge, I said screw it. "I can figure this out," I thought.
And figure it out I did. The code wasn't great and my confidence level about its quality was next-to-nil, but it worked.
Wondering what to do after I shut down the app, I considered how much I enjoyed thinking through the implementation of that export feature. It was just the right amount of challenge. Not so difficult I couldn't figure it out, but tough enough that the reward of making it work netted me a nice high.
I was hooked.
So, I decided to start teaching what I'd learned over the summer along with some other things. In a flurry, I whipped up a website and started writing tutorials. At first, just one every few weeks, then eventually, multiple every single week.
After three years running The Meteor Chef and having started a 1-on-1 mentorship business under that brand, I decided to spin off the mentorship work into its own company, Clever Beagle, back in 2017—I stopped publishing to The Meteor Chef, shifting my focus 100% to the new company and putting the site into maintenance mode.
I'd realized that the "sell" for my mentorship services had been the tools I was building for writing tutorials. Nearly everyone I sat down with (figuratively speaking) had used the boilerplate I made to kickoff their own app.
Interested in trying something new, I formalized a lot of the lingering ideas I had for those tools and organized them around a process of "shipping your first app."
It...worked. But as I soon found out, it worked a little too well.
Within six months of starting, my schedule was packed. So much so that I had to implement a waiting list for signing up.
I was excited beyond belief. "This is it!" I thought.
Well, sort of.
After about a year, I noticed that I was getting increasingly tired despite taking relatively good care of myself and getting decent sleep. I was also getting irritable.
Slowly, the happy, upbeat Ryan that people knew and (hopefully) loved started to get a bit snippy.
What I'd underestimated when I started Clever Beagle was the sheer amount of energy it required to context-switch between several people's projects and personalities, multiple times a day, every single week.
In reality, at peak I was working with 15 clients, 1-on-1 about ~30 hours a week. Cake job, right?
Some people I worked with were fairly advanced but looking for a better process.
Some people I worked with were total beginners and looking for hands-on guidance start to finish.
I had accidentally marketed myself into a corner. What I failed to communicate properly was who Clever Beagle was for.
Naively, when I started, I believed that was "anybody looking to learn how to build and ship an app."
Not quite. Lost in the nuance of that decision were a ton of different factors. Not just technical factors, but operational factors, too.
- How do I handle people randomly missing appointments, rescheduling, and making sure they get credit while still on boarding new customers and marketing the business?
- How do I handle days where my brain refuses to figure out a problem or something is outside of my wheelhouse?
- How do I handle interpersonal conflicts in respect to working styles?
It was a logistical nightmare. And this list was just the tip of the iceberg.
Despite recognizing the problem around late 2018, following some failed attempts (lowered in quality due to my increasingly non-existent energy) to repackage Clever Beagle and better identify who it was for, I kept working.
And I kept working. I even got the bright idea to start building my own SaaS amidst all of this.
The result? I was toast.
So toast that in late 2019, I sent out an email to all of my clients letting them know I was taking off the month of December.
The whole thing.
Going into the break, aside from taking a deep breath, I was a bit rattled. When I started Clever Beagle, I was loaded with optimism and positivity. By the time I reached that break, though, I was bitter and loaded with resentment.
The big question I asked as I recuperated? "Do you still want to do this?"
My answer was split: I want to keep teaching, but not like this. "If I keep this up I'll be done for good," I realized.
Fortunately, there was a germ of an idea lingering around. Over the summer of 2019, I worked with Jon Persson over at Cult Method on a rethink of the Clever Beagle branding.
We got all the way through and Jon had come up with a solid reframing of the business.
But during that break, another thing I'd neglected for awhile came into focus..."I don't want to be the cartoon dog guy going into my 40s." The name "Clever Beagle" was, admittedly, a bit of a wank—I was on a hippy "who cares" kick around that time and carelessly ran with it.
I texted Jon about considering a name change and in our back-and-forth he recommended the book Hello, My Name Is Awesome by Alexandra Watkins.
Laying down in bed one night, I started to read the book.
Almost immediately it introduced a concept known as SMILE. When deciding a name, it suggests that the "5 qualities of a super-sticky name" are:
- Suggestive - Evokes something about your brand.
- Meaningful - Resonates with your audience.
- Imagery - Is visually evocative to aid in memory.
- Legs - Lends itself to a theme for extended mileage.
- Emotional - Moves People
Having that framework was helpful. The names I'd already come up with were fairly meh and so I started to think about what described what I do.
Out of thin air, laying there reading, I remembered a phrase that came up while working with one client "having you is like having a cheat code for all of this."
I jumped out of bed to grab my phone in the kitchen. I looked at the usual domain extensions I use (.com, .io, and .co).
The .co was available so I snatched it up and went back to bed, giddy in a way that I hadn't been for years.
The next day I continued my research. There—surprisingly—wasn't much competition for the name, especially when it came to the programming and teaching world.
My mind was made up. That was it.
Way back around 2014-2015, I read the books "Do the Work" and "Turning Pro" by Steven Pressfield.
In reading those, I imbibed myself with a solid work ethic and, for the most part, an ability to focus on a task.
Throughout all of this journey, as a sort of reprieve from my teaching duties, I'd kept plodding away on the SaaS idea I'd started back in December 2018.
What I now realize was a side-effect of my brain being turned to mush, I kept dragging my feet on the idea I was working on.
Even though I had a new name and direction figured out for Clever Beagle, as part of the work ethic I'd developed, I also developed a sense for "finishing what you started."
As a result of that behavior, though, I made the rookie mistake of taking too long. I kept changing my mind, overcomplicating things, and not really clarifying what I was building.
Yada, yada, yada, it was destined for failure.
But, in a weird way, working on the app was therapeutic. It was the one thing I was working on that had nothing to do with Clever Beagle. It was an oasis.
So, throughout 2019 and 2020, I kept plodding away. Eventually, following the initial shock of the pandemic (no joke, as soon as I started seeing videos of people dropping in the street in China I was taping doors shut) in early 2020, I decided to hurry up and finish the idea for release.
In May of 2020, I launched the app as Command: the all-in-one tool for managing your SaaS product.
Yet again, I was drained. I was happy to have finally gotten something out the door, but I had been fighting with the idea that it just wasn't right.
And, to be frank, it wasn't. It sucked.
It certainly looked cool and had some novel features, but in my sordid day-to-day, I failed to build something that was needed, and instead, built something that was nice to have.
So, in one final burst of naivety and confusion, shortly after launching I decided to refocus the app around being a customer development and marketing tool for SaaS products.
I spent the summer of 2020 getting everything ready and in September 2020, I relaunched the app under the name Hypothesis.
With that live and exorcised from my mind, I was finally ready to take the CheatCode idea for a spin.
For the past few months, I've been asking myself the question "what did you get right, what did you get wrong with Clever Beagle?"
In that process, I realized that I've foolishly failed to take advantage of a few pieces of low hanging fruit:
- Continuing to write tutorials, similar to what I did at The Meteor Chef.
- Writing courses.
- Building a community.
While I did do some writing and did do quite a bit of work on videos over the past few years, their focus was off. It didn't have the same packaging or clarity that The Meteor Chef had.
Looking back on the past four years, some of what I released was good, but a lot of it was discordant and reflective of my state of mind back then (to be frank, a mess).
So, today, this is where I start to give this whole thing one more shot.
The goal of CheatCode is to offer:
- A paid, pro Discord community (with access to Github repos for the free tutorials).
- Paid courses on building full-stack apps.
- Pair programming services.
To bolster that effort, today, I'm launching betas of:
- A Next.js boilerplate with a fully implemented accounts UI and example CRUD documents feature using GraphQL.
- A Node.js server boilerplate, featuring a fully-implemented Express server, GraphQL server, and user accounts.
If you're a Meteor fan, the boilerplate I've been building under Clever Beagle, Pup, will be getting some much-needed attention in the next month or so.
There's a lot more than this coming, but I'm keeping my mouth zipped for now. Make sure you sign up for the newsletter to get updates as they happen.
Shifting focus to the content side of things I'm keeping things simple.
I'm starting with one tutorial, just like I did back in 2013 with The Meteor Chef. If you're curious, give it a read.
Courses will come online within the next month or so. My focus there will be teaching you how to build full-stack apps and features from scratch.
If you'd like to get updates on the latest tutorials and courses, make sure you sign up for the newsletter.
As for the 1-on-1 mentorship services I've been offering under Clever Beagle, things are changing a bit. If you're an existing client, check your inbox for more info (don't worry, I'm not going anywhere; just shuffling the deck).
While I'm no longer offering a hands-on, step-by-step system for building your first app, I am offering 1-on-1 pair programming sessions.
These will be available first-come, first-serve and are openly available for booking starting in April (no subscription required—for folks looking to work together weekly, a subscription option will still be available by request).
The goal of this service is to help you fix bugs and implement features in your full-stack app, 1-on-1 via Zoom, and to hang out and get in a laugh or two.
If you'd like to get updates on pair-programming availabilities, make sure you sign up for the newsletter.
This is the most excited I've been in a long, long time.
While I'm a bit frustrated by the path it took to get here, I'm confident that having pushed this idea—providing tools and teaching others how to build apps—to its edges, this is the best foot forward.
I'm also old now. While I've enjoyed being a bit of a cowboy over the past decade, the days of being a low-key, eccentric maniac are winding down. I'm ready to put on my Birkenstocks, pop in a Yanni tape, and relax.
Jokes aside, if you're a long-time reader/listener/watcher/client, thank you for sticking with me. Your investment in this circus will not be without reward. I am forever grateful for your attention and belief in what I'm doing.
So with that, what's it they always say?
Third times a charm?
No spam. Just new tutorials, course announcements, and updates from CheatCode.