Code and the Coding Coders who Code it

Episode 42 - Cody Norman

Drew Bragg Season 1 Episode 42

Cody Norman, an independent Ruby on Rails consultant and creator of SpotSquid, takes us on a fascinating journey through the intersection of technology and tattoo artistry. Discover how Cody transformed a traditionally paper-based industry into a tech-savvy environment, using customer feedback to tackle the unique challenges faced by tattoo artists and shop owners. With anecdotes from his tech conference experiences and insights into his consulting career, Cody's story is both relatable and inspiring for anyone looking to merge creativity with technology.

In this episode, you'll unlock the secrets to finding your niche and the delicate balance between diverse client projects and passion-driven endeavors. We explore Cody's path to becoming a potential expert in Action Mailbox and email solutions within the Rails community, as well as his strategies for creating impactful educational content. Cody's experiences offer valuable lessons on testing email functionality and the potential of establishing oneself as an authoritative figure in a specialized area.

As Cody shares his journey through various tech conferences like Rocky Mountain Ruby and RailsConf, listeners will be captivated by his engaging presentations and the excitement of future opportunities. We delve into the anticipation of attending events like MicroConf and RailsConf and the potential breakthroughs these gatherings can bring. Wrapping up with Cody's entrepreneurial aspirations, this episode promises insights and inspiration for developers eager to carve their own path in the dynamic world of software development.

Send us some love.

Honeybadger
Honeybadger is an application health monitoring tool built by developers for developers.

Honeybadger
Honeybadger is an application health monitoring tool built by developers for developers.

Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.

Support the show

Ready to start your own podcast?
This show is hosted on Buzzsprout and it's awesome, not to mention a Ruby on Rails application. Let Buzzsprout know we sent you and you'll get a $20 Amazon gift card if you sign up for a paid plan, and it helps support our show.

Speaker 1:

Hello everyone, and welcome to another episode of Code and the Coding Coders who Code it. I'm your host, drew Bragg, and I'm joined today by my friend, cody Norman. Cody, for anyone who hasn't had the pleasure of meeting you yet, would you please do a quick introduction?

Speaker 2:

Sure, my name is Cody Norman. I'm an independent Ruby on Rails consultant and live in a small mountain town here in Colorado.

Speaker 1:

Fantastic, and you've also spoken at a few conferences. You also are running your own little. What would you call it? A company, a SaaS product? What is the proper term for SpotSquid?

Speaker 2:

It's definitely a SaaS. I've heard the term micro SaaS thrown around. Maybe that's closer, just because right now it's not taking up all of my time, but for some reason I keep finding myself gravitating back to trying to make tools and software stuff for tattoo artists and shops.

Speaker 1:

It's such a cool thing and I think we'll get into that a little bit For anyone new to the show. The way this is going to work. I'm going to ask Cody three questions. I'm going to ask him what he's working on, what kind of blockers he has. If he doesn't have a current blocker, he can talk about a recent blocker he had, how he went about solving it. And then I'm going to ask him to tell us something cool, new or interesting that he's recently learned or discovered or even built. It doesn't have to be coding related, but this is code and the code encoders who code it, so it absolutely can be. All that being said, cody, what are you working?

Speaker 2:

on. Right now I'm working on a few different client projects. I've also been spending more time with SpotSquid. I've started getting a little more traction mainly with my actual tattoo artists, so now I kind of have the rare opportunity to dog food it on both ends. So I get to run it on the shop side to help them out, but also get to use it as a client too. Perfect, that's the best of both them out, but also get to use it as a client too.

Speaker 1:

Perfect. That's the best of both worlds, right? You get to see how your app is handling both sides of the interaction when you're trying to get SpotSquid out to more artists. Is it just word of mouth that you're hoping for, or do you have a strategy? Or is it because it's a micro SaaS, it's just for you and your current tattoo artist, and because it's a micro SaaS, it's just for you and your current tattoo artist and maybe it'll go?

Speaker 2:

from there. One thing I've been figuring out is I feel like my best channel for traction is going to be referrals and word of mouth from other artists. Most shops are kind of hesitant about doing anything new. I think a lot of that's because there's still a lot of the like apprentice and craftsmen and earn your dues type of thing, and a lot of these people have been practicing their craft for 10, 20 plus years and they don't have new frameworks and languages to learn every two years, so they're very hesitant to change. But honestly, for probably the first couple of years of trying all this out, most of my customer research was like while I was being tattooed, kind of setting that as the baseline. It makes it a little bit easier once I have something that I think can help them out a little better.

Speaker 1:

Cool, and it just occurred to me that, because you and I have spoken about SpotSquid a few times, I might have more knowledge than your average listener. Can you give a brief overview of what SpotSquid is?

Speaker 2:

knowledge than your average listener. Can you give a brief overview of what SpotSquid is? The best explanation is it is a software application to help tattoo shops manage business operations. And that's kind of purposely vague, mostly because I'm trying to talk to the customers as much as possible and figure out their biggest pain points, to try to deliver a painkiller instead of a vitamin. So I've been doing more things manually, testing out a lot of stuff, these quick experiments, to get feedback. So it's something where I'm not exactly sure how to explain it, but I do have some ways that I know that I've been helping shops and helping clients and smooth out a whole old and traditionally paper process.

Speaker 1:

Sounds like a lot of fun too, especially just the thought of being able to go in get tattooed. While you're getting tattooed, you're talking to the artists about what problems they have, and then you're going home and building a solution for that problem. It almost sounds like the perfect world for a software developer.

Speaker 2:

I've worked at a ton of startups over the years and built a lot of things, but the biggest thing that I'm noticing that's making the difference with this is I've never really worked on something where I really love the customers, so I really love hanging out in tattoo shops and working with them and trying to help them do what they do best more, so not have to worry about the other stuff, and I think that's made a really big difference as far as trying to get feedback and trying to get a solution that works for them instead of something that I think would work as a developer.

Speaker 1:

In addition to other cool things that you've been working on. You recently spoke at Rocky Mountain, Ruby. What was your topic?

Speaker 2:

I spoke on Action Mailbox Awesome. This was the same talk that I gave at RailsConf. I've given the similar talk at a couple other meetups throughout the year, but this was the only other conference that I've spoke at and really my second conference ever. I just kind of got into the speaking thing earlier this year, so it was nice to kind of have two, and there's not much close to Bailey, but Boulder is about as close as it gets. It really felt like a home court advantage for that.

Speaker 1:

I was super bummed to miss Rocky Mountain Ruby this year. Last year was an awesome conference. Boulder is such a cool town. It's located in the heart of everything, super walkable town. I know you did some cool stuff on lunch when I was there. We actually climbed one of the flat irons on lunch because why not? It's right there. It's such a cool conference. Other than your talk, which I assume was the best talk of the conference because I've seen your talk before and it is awesome what was your favorite talk?

Speaker 2:

It's really tough. There was a lot of great talks. I really enjoyed Marco's talk, mostly because it reminds me of all the things that I should be using with Hotwire and all the tooling and stuff that are out there that I tend to forget about until I'm doing the exact same things that he mentions. That it can prevent, like not remembering how to name my controllers or the actions or something like that, and that was probably the most relatable for something that I could take away and start integrating into my day-to-day.

Speaker 1:

So for preparation for your talk, you deployed a Rails 8 application with all the defaults using Hatchbox. So you didn't use Kamal, you used Hatchbox, which props probably would be my approach to.

Speaker 2:

But what was it like to deploy a pretty much Rails new standard and overall it worked out pretty well and one of the things that I noticed, I think, this type of setup where it's all SQLite and all running on the app, especially for this particular demo app.

Speaker 2:

We didn't really have any views or any other stuff that it had to deal with and the one thing that I noticed is it just felt so fast because it's writing to the file and processing the jobs and so Solid Q SQLite, seeing all those put together and seeing how it works on a decently provisioned server. I think it was like a two gig DigitalOcean box with nothing else running on it, all SQLite and processing all the emails, storing storage on the disk, which is the first time that I've done. Typically it doesn't work too well with ActionFox stuff, but wanted to try it. It seemed like it worked and it was a really cool experience and I shipped it on Friday and I just kept cramming things in there to see how much I could get and was able to get a few different examples as well as a couple of hidden Easter eggs within the email set. No one discovered, but maybe next time.

Speaker 1:

The fun of Easter eggs is always making the Easter eggs more than waiting for them to be found, because sometimes they're not. That's cool. In all of the things that you're working on, what kind of blockers have you been running into?

Speaker 2:

The biggest blocker I've been running into is trying to figure out my niche. Where am I the most useful and the most happy and the overlap of the most productive things? I can work on? Doing the consulting stuff. That's been interesting, and I've been building other people's apps for 10 plus years now, which is fun, but I feel like I tend to do my best work and have the best results for things that I work on myself. I don't think that's necessarily saying that I'm better. I think, if anything, it may just be the fact of being able to make a decision, whether it's the right one or not, and just move on really quickly, which I think helps refine and lead into other fun things. So trying to figure out how I can do more of that, how that can be viable and sustainable and still be able to make a living and be successful.

Speaker 1:

Well, it sounds like you're on your way to being the action mailbox guy, because you've done the two talks now and I've seen one of them, and I know from at least that one that you definitely have your knowledge on that topic down more than most of us who have only dabbled with it, and you've also recently published a course on it, right, yes, and how is that going?

Speaker 2:

so far it's been going pretty well. It was definitely something new for me and learned a lot. I think one of the biggest takeaways I had was, as I was about to publish it, I've done a handful of YouTube videos to kind of get my feet wet, but realizing that course videos should probably be a lot different than YouTube videos Because everyone kind of has more context, you don't have to explain or hold people's hands as much. They should probably be a lot shorter. People normally watch them in batches.

Speaker 2:

So trying to figure out basically how I would like to take a course and instruction and everything that way, so trying to cut down everything as much as possible to get really focused and not a lot of fluff to meet like a certain time limit or something. So that was really interesting. And then also the other thing I enjoyed was digging in deeper to testing and how I can set things up in a development environment and figured out a few easy, quick ways to use the Ruby Mail Jam to create all the stuff that I need, especially if there's like specific headers or reply tos or things like that, and then write those to a file that I can just copy and paste and paste directly in the Rails conductor source thing, so I don't have to try to send myself live emails back and forth and pull the raw source from there.

Speaker 1:

I have always shied away from any kind of email testing because I think what you were alluding to it kind of is a pain in the ass. You're doing a lot of manual work. I hadn't thought to use the Ruby Mail Gem. That sounds like a whole other course. Maybe that's your niche. You just got to start rolling out these courses of like I'm going to solve all of your email woes in Rails, because there's a lot of them. There's a lot of email woes. But is that a viable niche? Do you think for you you could pull a Jason Sweat? Jason Sweat is a fantastic Rails developer. He's a good, solid consultant, but then people in our community know him as the testing guy. Is that something that you think you're looking for? Where you're like I'm a solid consultant and I'd continue to do my consulting to pay the bills. But also in the community I'm Cody the action mailbox guy or the email guy.

Speaker 2:

Yeah, that's an interesting question and something I've been thinking about. And, like anything, skills and knowledge can atrophy pretty quickly. So I think, because I wrote a blog post and then I gave a talk and then I gave more talks, I've been pretty consistently doing stuff with action mailbox over the past few months or so and I know that whenever I do move to something after about six months or so, I've already had to re-consult my own blogs several times about how to do stuff. So I think a lot of this is just trying to document everything that I have and I've learned before I forget it. And because I'm talking about it, people are also asking me more questions. So now I know what people are curious about and I could kind of work that in. So it gets a little bit easier to start sharing information on that.

Speaker 2:

As far as whether it's viable, I don't think so. I think it's something that is probably pretty easy for a team to pick up. If you've worked with ActiveJob before, then you can get spun up on processing inbound emails pretty quickly. I think, if anything, it's a good example of showing how I can pick apart and learn stuff and try to relay information to other people and take something that sounds kind of bland and try to convince people to watch two plus hours of videos on parsing inbound email Sure.

Speaker 1:

Okay, that makes sense. I haven't had the pleasure of doing inbound email stuff too much. My last job we didn't have a process but we weren't on Action Mailbox. It was something that we were looking at, potentially moving to, and if I had seen your talk slash, had access to your course prior to leaving there, I might have used it as the springboard to actually get that project done or suggest it to someone because it would have solved the homegrown headache that we had. But it makes sense that it's potentially not something that you're going to market yourself as the email guy. For the whole blockers thing, was you talking about how to figure out what you are in the industry, carve out your niche? I mean, where do you see being a jack of all trades, master of none, as being a blocker?

Speaker 2:

The way it kind of acts as a blocker is it attracts certain types of work that's probably closer to like commodity work Just trading hourly time to fix this thing, submit the invoice and move on, so not really having a chance to invest in building a product, refining stuff, which are things that I really enjoy and I think I'm pretty good at. Prior to my development life, I worked in sales and used to work in the mortgage industry and made 100 plus calls a day, so reaching out to people and talking to them about stuff isn't super foreign to me, and I know that that can be to a lot of developers.

Speaker 1:

Okay, so you're hoping to find a little bit more of a way to be involved in projects, rather than the guy that they're just like hey, we need X done. Please go do it. Come back to us when you're done.

Speaker 2:

Right, and with that I think, having several smaller clients and working on a lot of different projects, there's always a deadline soon. Someone always needs something, so that's always a little bit difficult, especially with conferences and speaking engagements and things like that coming up. It kind of requires me to shoehorn in those interesting opportunities in between wherever I can get to that client.

Speaker 1:

Right. If only we didn't have bills to pay. It's always interesting to me to talk to consultants whether it be like someone who works for ThoughtBot or for TestDouble or for Evil Martians versus what I've always done in my career and that is work for a company that has a product and I work on said product. It's always interesting to hear the different types of struggles and the different approaches to work, because in some ways what you do sounds very appealing to me.

Speaker 1:

I get to work on something new very frequently. Everything's kind of new and fresh and I'm always learning something because I'm working on the next thing. But then when I hear you or Jeremy Smith or whoever talk about the work, it does kind of sound like man. It would be so nice to be able to latch onto a product and help it grow, not just from a go, build it, but having actual input. So I'm always interested about hearing about those particular challenges. So what is something new, cool or interesting that you've recently learned or discovered or built? And it doesn't have to be coding related, because I know you do a lot of stuff that isn't coding also, but what is something that would fall into that category?

Speaker 2:

Yeah, I think the Rails beta app that I deployed for Rocky Mountain Ruby. That's pretty cool and had going to spin up a Rails 8 app for toy demo, for fun app. What is your key takeaway?

Speaker 1:

or takeaways even.

Speaker 2:

Yeah, I think one of the biggest takeaways is maybe not for every application, but I definitely feel more comfortable using SQLite for multiple databases in something that maybe not production. It's not like it's making money, but I did put up live email addresses in front of a live audience for them to email and no one shook their fist at me, so I think they all made it there and that was fascinating to see. It looked like everything processed really quick. Also, playing around with some of the action mailbox stuff, one of the patterns I think is really helpful is like an informational mailbox. So like you email food at whatevercom or coffee and then I would send back a list of options walkable within 10 minutes of the venue. Things like that are really easy and they all seem to process really quickly.

Speaker 2:

The other thing that was really nice was because I'm only replying back to email addresses that I received. I had a 0% bounce rate for these emails and also didn't require anyone to sign up or confirm or anything like that. They were just able to send an email and get some use out of it. Some of them were unwillingly entered into the Easter egg contest, which no one found, but for those two informational mailboxes. The reply to address was set to go to the special inbox where the first one who would reply to the email got sent back a gift card for a local spot close to the area.

Speaker 2:

So that's a great idea being able to set up and facilitate that kind of stuff without requiring user accounts for, like a quick short event like conference or startup week, something like that. That was a lot of fun. And using SQLite, everything was pretty fast and performant. And with Action Mailbox, most of these emails are set to be incinerated or deleted within 30 days anyway, so I don't have to worry about syncing or a lot of the other issues, and I think it was a great use case for something time-boxed and really focused for like a specific task.

Speaker 1:

Yeah, that is a cool and interesting use case of that technology. I hadn't thought about something like that, but now you got the wheels turning in my head about all the cool things you could potentially do with Action Mailbox and I'm not going to try. And on the wheels turning in my head about all the cool things you could potentially do with action mailbox and I'm not going to try. And on air, have my little exploratory, I will have to play. When you chose to deploy with hatchbox versus kamal 2, as the case is, was that a hey, I'm doing enough rails 8 and rails 8 defaults, like I'll stick with something I know. Or was there a specific constraint that was like Hatchbox is going to make this better or easier than Kamal? Or was it just like I can't tackle learning another new thing right now?

Speaker 2:

We're going to stick with tried and true that was pretty much it Basically just trying to bite off new technologies and new learnings in digestible chunks, so if something was going wrong, I would have a pretty reasonable idea where it would be. I've deployed a lot of apps on Hatchbox for a few years now. I'm very happy, and that seemed like a good kind of way to split the learning into a digestible chunk where I could also get it done in time too, because this was something that it's like maybe I can make this live and I was able to deploy it Friday afternoon and then I think I got the actual email account connected and approved Sunday night. So all of it was pretty last minute. So anything for speedy deploys was a big help.

Speaker 1:

Yeah, I also assume you run into issues with Kamal. You're kind of stuck with maybe a GitHub repo of putting an issue out there and at least with Hatchbox, shout out to Hatchbox's support team. You can actually talk to someone to solve your problem if it got to that level. So I can understand that Exactly. Somehow we've ripped through all three questions. Is there anything else you wanted to talk about, anything you want to revisit, because we can talk for longer?

Speaker 2:

you see talks. I don't have any more conferences or talks lined up. Are you going to ruby conf? It's in november and I saw some pictures of myself at rocky mountain ruby. I was like, oh my god, I look so high that's fair.

Speaker 1:

Chicago's a trip for you coming out of colorado, so that is fair. Will you be at the last RailsConf? I'm pretty sure I will. I saw it was going to be the reception. You're pretty much the first other person I've talked to about the July date, because when I first heard July, I was like July, no one does a conference in July. And I was like actually, that's genius, you're not conflicting. I couldn't go to Rocky Mountain, ruby, because I went to Railsworld. I've had to pick and choose certain other ones because it was a little too close to another conference I was already speaking at or committed to going to, and I couldn't go to Blue Ridge or I couldn't go to, like I said, rocky Mountain. So having it in July, when there's just nothing around and people are already taking a lot of time off during that time, so maybe they can shoehorn it into a vacation where they take the family it's almost genius. I hope that's how most people feel about it.

Speaker 2:

Yeah, I think it's great. I've been considering attending a micro comp sometime soon. I've spoke to a lot of people, a lot of Rails people who have been to those in the past, but they've always been pretty close to Rails comp, usually like within a couple weeks or so. So for that same reason it was always tough for me to make it. So maybe this year that's something that I can work into the schedule and still be able to make RailsConf.

Speaker 1:

Are you going to continue to submit the Action Mailbox talk to conferences to keep giving it? Are you going to try to do another talk or is talking taking a backseat for a little bit?

Speaker 2:

I'm not sure I really enjoy doing it and I love having people come up to me afterwards and tell me about things that they have ideas to build now, so I think that's great. As far as like submitting it, I don't know if I'll continue to submit it. If I do, it would be somewhere like tropical or somewhere in Europe, like not anywhere in the US. But if nothing else, I think I will probably just keep it around for meetup organizers to be able to hop in for them, because at this point I don't need much notice, can typically give the talk pretty quickly and, yeah, help out meetup organizers that may be short speaker or need someone to fill in for a month.

Speaker 1:

So Action Mailbox kind of your thing came from your own learnings, sort of self-documenting as a blog post turned it into a talk. If you had to guess, either by saying this is something that I've recently learned about that I think I have enough wisdom to part on others, or I want to learn enough that I could potentially have enough content for a talk what do you think the next potential talk level topic would be?

Speaker 2:

That's a good question and I don't think I have an answer for it right now. Perfectly reasonable answer, because one of the things that I kind of realized and shout out to Kevin Murphy for giving this advice but being able to make the talk personal in some way just makes a huge difference as far as delivering it and feeling more comfortable, and I think that is something super important that I'll probably keep in mind now, instead of just looking for topics that people may be interested in, trying to figure out ways that I can, you know, relate it to me, which is really hard to do until you've kind of given the talk once or twice. But the one thing that I've learned is being able to kind of make things personal and give your own spin on things seems to help it go over a little bit easier.

Speaker 1:

Yeah, and come up with cool demo videos of you sending an email to start your truck at the end, which was still probably the coolest ending to a talk I have ever seen.

Speaker 2:

I was so happy I didn't tell anyone about that ahead of time. I had reminders in my phone and everything like don't just say it, don't tell anyone, but I'm glad you were able to pop in for that, and getting to see people react to that in person was something I didn't really think about, but it's been amazing.

Speaker 1:

It's cool because it's one of those hey look, this is a cool thing you can do. You would never do this, no one would do that. But at the same time, seeing it happen gives you this feeling of empowerment, of like, oh shit, if you can start a truck with an email, I can do anything with an email. The sky is the limit. I am limited by my imagination only to do this. I think that's what's so cool about it is it's this ridiculous. I would never do this. But at the same time, look at all the things you could do if you can imagine it.

Speaker 1:

I love it and I will second your shout out to Kevin Murphy. Having him watch your talk and give feedback is such a gift because he is a solid, solid speaker and is a wealth of knowledge on making talks personal and making them great and making them engaging. And my talks would be half as good if I didn't have him giving me feedback. Second, your shout out Cool. Well, I'm bummed I won't see you in RubyConf in Chicago, but I'm pumped to see you at RailsConf in July and hopefully somewhere in between. But I'm pumped to see you at RailsConf in July and hopefully somewhere in between. But who knows, we'll see. I definitely won't be at a MicroConf, because that's not what I do.

Speaker 2:

Right, yeah, and that's still out there. But yeah, for the first time that it's kind of on the table and think it might line up well with where I'm thinking about.

Speaker 1:

Yeah, that's exciting and it sounds like a good way of potentially solving your blocker, of finding that niche right, Like that's sort of what microconf is is like it's people who run micro businesses.

Speaker 2:

There always seem to be a pretty good rails contingent there, which so I think that would be an easy way to kind of dip my toe into the water. Hashtag one person framework yeah exactly If you would have asked me what I thought I would spend this year doing. I don't think I would have listened most of the things that I've done and really enjoyed doing. So sometimes you just never know and just have to put yourself out there and see, Put yourself out there.

Speaker 1:

Roll with the opportunities. You never know where it's going to take you Exactly. Very cool. Well, hopefully we'll have you back on after MicroConf and you can tell us whether or not your blocker has been solved and if you've started to find your niche or if you've figured something out new that you want to share with the world. Thank you for coming on. Where can people find you on the internet to keep up with all the cool things you're working on?

Speaker 2:

The easiest way is to find me at CodyNormancomcom. That has all of the links for all the different social platforms, so whenever they inevitably turn, they'll be updated their turn, change their name rebrand completely.

Speaker 1:

You know, the source of truth is Cody Normancom. Cody, thanks for coming on the show today and we'll talk to you again soon. Thanks, drew.

People on this episode

Podcasts we love

Check out these other fine podcasts recommended by us, not an algorithm.

Remote Ruby Artwork

Remote Ruby

Jason Charnes, Chris Oliver, Andrew Mason
The Ruby on Rails Podcast Artwork

The Ruby on Rails Podcast

Elise Shaffer and Brian Mariani
Ruby for All Artwork

Ruby for All

Andrew Mason & Julie J
IndieRails Artwork

IndieRails

Jess Brown & Jeremy Smith
The Bike Shed Artwork

The Bike Shed

thoughtbot
Code with Jason Artwork

Code with Jason

Jason Swett