Cody Norman - July Update


Hello and welcome to the first edition of my new monthly newsletter update!

I’ll be talking about my ongoing experiences with mentoring early career developers, working on my SaaS business on the side, experiences with doing contract and consulting work but I’m also planning on including some lighter and more personal stuff. A straight laced professional monthly update is not my style and isn’t something that sounds sustainable for me.

July has been a wild month here in the mountains. It’s been the wettest and the hottest I can remember in our 5 years living here. The extra rain is always welcomed since we live in an area that's at high risk for wildfires.

An unexpected benefit to this is I don’t have to email the fire department ahead of time when I’m planning on BBQ. A good way to freak your neighbors out during a fire ban is to start blasting smoke while it’s pitch black at 4 AM.

Published Posts



When I left my full-time job back in May, I set a goal to publish at least 2 posts a month. Albeit a bit late in the month, I was able to keep up that pace and publish two posts this month.

The first post is about how I keep Spot Squid, which is built on Jumpstart Pro, updated. The app has been going for about 18 months now so I’ve tackled a ton of gem updates and a few larger updates merging changes from the upstream version of Jumpstart Pro. I made a commitment early on to not get caught in the tar pit and let upgrades get to a point where they become unmanageable. I’ve played with various ways to keep things updated and have found a nice system that works for me.

I also started thinking about upgrades as something like a force-multiplier. Why wouldn’t I want new updates and features merged into my apps for the price of fixing some merge conflicts? There have been at least a couple features I was going to implement but never had to because that feature was added upstream. Whatever time I spent fixing conflicts and merging changes was vastly lower than whatever I would have spent writing that myself.


The timing worked out as well. I have some recurring tasks for bumping gems every 2 weeks and try to pull upstream updates every couple of months. However…after some great user interviews for Spot Squid, I started working on a MVP of some features that I think would solve a better and more focused problem for tattoo artists and shops.


With a list of features, and some soft commitment from some shop owners (they basically said “Here’s what I pay for this service, here’s what I hate about it, if this is remotely better than the alternative, I’ll pay and try it out in 2 shops). Focusing on getting something in a potential paying user's hands as fast as possible has been my main focus. I decided to pause updates and just focus on getting that feature to a spot where I could start doing some demos so I’m a bit behind. This made for a pretty good example of what most people experience though so I think it worked out well.


https://www.codynorman.com/ruby/upgrading_jumpstart_pro/



The second post this month was about using Rails Concerns. I enjoyed writing this post more than I expected I would when I first jotted down the idea. This is a topic that came up in one of the ‘office hours’ type sessions I have a few times a week with a group of early career devs. It’s been a long time since I’ve had to do something more than just glance over the Concerns docs so it was also something that was really beneficial for me.


https://www.codynorman.com/ruby/rails_concerns/



Professional Updates

July marks my third month since making the switch back to contracting work. Currently, I have 1 active project I’m working on and things have been going well. I’m building a SaaS application with Jumpstart Pro for a group I connected with in Atlanta while at Rails conf back in April. Hopefully, I can talk about details more once the project is launched in the next couple of months.

It’s really been a great experience getting to build something new again. Also, it’s giving me more chances to get experience with Hotwire. With Hotwire and Tailwind, I feel the most comfortable and confident working on front-end stuff as I have in years.

I’ve been trying to stick as closely as possible to the client’s conventions for their other apps which meant getting some experience with View Components.

I’m 100% onboard the View Component train now. I’m still figuring things out but so far, it’s been a great way to encapsulate view logic and make things reusable and configurable.

One takeaway I have is it really helps me to start with partials. After starting out with trying to make every. single. thing. a component, I would spend a lot of time refactoring to keep things focused and flexible.

Since I’ll need some markup for the component anyway, starting with a partial gives me the markup I’ll need anyway and also gives me a better idea of the abstractions and choices I’ll need to make to keep things flexible.

I’m heading into the final stages of the project this month and excited to start testing and rolling this out to the end users.

While that project is winding down, I’m hoping to kick off another new project for a non-profit in NYC building them an app to manage their membership and events that will replace their current old Drupal app.

While that project is winding down, I’m hoping to kick off another new project I’ll be leading through the agency I used to work at. The project will be for a non-profit based in New York city that helps them manage their memberships and events. They’re currently on an older Drupal site and were really excited when we told them how much we could improve their experience.

This project is already shaping up to be a little bit different because of working with a non-profit. Money has to be allocated ahead of time and in large enough chunks to be able to get some meaningful work done before having to ask for additional funding. It also has to be approved by a board of directors composed of old school NYC business types who have no experience with these types of projects. Then the scope of work and contracts need to be vetted and approved by their lawyers. Things are moving slow, but honestly not as slow as some enterprise stuff I’ve been involved with, so it could be worse.

Their digital team I’ll be working with is great and extremely excited about what we’re going to build so that’s a huge plus. It’s not bad, just different and will probably have some more unique challenges down the road.


A New Opportunity

A month or two back, a colleague and former co-worker reached out to me to get some feedback on the mentorship aspects of an incubator program they’ve been working on. Earlier this month, they asked me to mentor one of the participants. I was extremely flattered and think it's a great opportunity to do something different.

We’ll be having meetings every 2 weeks over the next 2 months and I’ll be receiving a stipend for my time at the end of the program (that’s why this is in the professional section) . When we were initially talking about the mentorship program, I thought that offering something like a stipend at the conclusion would be easier than something like billing hourly. It seemed like a good way to show mentors their time is valued but also not have to track time and itemized invoices. That ended up working out wonderfully. It’s still in the early stages so I’m sure I’ll have more to share as time goes on


Other Updates

Spot Squid stuff has been going well. I haven’t been talking about it online as much lately because I think it’s a bit of a distraction from what I should be focusing on. As much as I enjoy sharing updates and things with others, most people I know online aren’t my target customers. The more I talk and post about it, the more nerds I get kicking tires. I need more artists telling me what they’ll pay for and have been doing my best to focus on the things that will move the needle. Knowing that my time is limited, as much as I’d like to, I don’t have time to do everything so have slowed down a bit on that.

One the tech side, I’ve been working as fast as I can to get something presentable ready to show off to some of the artists and shops I’ve been getting feedback from. A few months back, I really leaned in to using Flipper and Flipper UI in my admin to tweak, toggle and test new features. Some of the things I’m working on now are a big departure from the current version of the app but swapping out nav links and views with Flipper has made that a breeze. I can basically have 2 different versions of my app, solving different problems, with a few clicks.

I’m hoping to wrap up the MVP of these new features and start doing demos in the next couple of weeks. My goal is to have a couple of shops on board to start testing the new updates sometime in August.

Rails World

I’m fortunate enough to be one of the tech leads for a project with the Rails foundation to build an app for the Rails World conference. I’ve also secured my Rails World ticket and am planning on heading to Amsterdam in October.

https://rubyonrails.org/2023/5/30/rails-foundation-and-agency-of-learning-partner-for-event-app


So far, it’s been a different experience than working on apps in the past. The Rails Foundation wants to provide junior developers with hands-on experience building an app and working with a team. This means I try to act as something like a cross between a tech lead and coach. Some of my advice is purposely vague and maybe a little incomplete. I think it’s important to give them a path forward, but also let them make their own decisions and mistakes (followed by fixes). I’m also trying to commit as little code as possible. I think it’s important to highlight the skills of the newer developers while also showing off how productive a small team can be working with Rails. Any changes I’ve made have been limited to git cleanup or something like adding a config file and those are usually turned into a live session where we walk through the added items.

We had our first demo this week and I couldn’t be happier with how it went. The two developers that have been working on the project were responsible for demoing what they’ve been working on. Doing your first software demo as a newer developer is pretty daunting, much less when it’s for a worldwide conference for the framework you’re building the app on, no pressure right?

They absolutely crushed it. It was smooth, focused, and even while one of them was controlling the screen, they were seamlessly handing off between each other. Top notch.


Ruby Conf Proposals

After emerging from a haze of burnout over past year and a half I’m back to a place where I would like to start doing more public speaking. I’ve been kicking around a list of ideas for some talks for a couple of weeks and am shooting for submitting 2 proposals for Ruby conf. It’s been years since I’ve done anything more than a lightning talk so I’m looking forward to the challenge of planning out a longer talk and getting a proposal accepted. I’m still working on finalizing the ideas for the proposals I’ll submit but 2 of the top contenders are:



Bridging the gap. Apprenticeship patterns to prepare early career developers for success.

This seemed like an obvious place to start. For the past 4 months or so, I’ve been meeting 3-5 times per week with a group of early career developers. I also spend some time every week reviewing their code and walking through changes or improvements. Having recent experience and details to pull from seems like it would make putting together a 30-40 min talk a bit easier.


Community Stewardship. Viewing your community like a natural resource.


This is an idea I started thinking about back earlier this year when I started becoming more active in mentorship. I gave a quick talk about this topic at Blue Ridge Ruby and the short version is thinking of the Ruby community like a natural resource really changed how I thought about ways I could help and contribute. It’s important to take steps to preserve its future and needs continuous nurturing to ensure a healthy future. I also talked about some of the conservation stuff I’ve done with fly fishing (once I volunteered with parks and wildlife to electroshock a frigid river for their annual fish survey) and mentioned how I started making slides, but they ended up being all fish pictures. The #1 comment was “I want fish pictures”



If you have any feedback or suggestions for these front runners or any other topic you’d think I’d be suited to talk about, please let me know.


I hope you enjoyed this month’s update. If you have any questions or would like to chat about anything I’ve mentioned in here, you can reply to this email.

See you next month!


- Cody

Hi! I'm Cody

Writing about mentoring early career developers, building and running a small SaaS app built with Ruby on Rails and my experiences in contracting and consulting. Subscribe for a monthly update on what I've been working on.

Read more from Hi! I'm Cody

Rawhide Ruby The Ruby people, strange people - Linus Tovalds Howdy Y'all! I think ruby has always had some of the coolest events and people. It's been great seeing some of the smaller and regional conferences come back to life the past couple of years. This is an idea that I've been thinking about for a while now and think it's finally time to push it out into the world and want to say thanks for helping make that possible. The Idea I'd like to rent out an entire ranch for the event. In other...

It’s been a whirlwind month, to say the least. At the end of September, I had multiple client projects wrapping up, a rapidly approaching deadline for the Rails World app, and wrapping up a paid mentorship engagement. All of this is on top of planning international travel for the first time. While not exactly what I’d call ‘relaxing’, I would say the conference has me feeling a bit rejuvenated afterward like these types of events usually do. Dealing with multiple smaller engagements at once...

This has been a wild month. One of my more exhausting ones in a while. Between the heat, personal obligations, and projects ending and kicking off all at the same time, it really put me through the wringer. Published Posts Nada, zip, zilch, zero. August was the first month since switching over to self-employment where I didn’t post at least 2 articles. Between my current client obligations, working on my Ruby Conf proposals, and the last stages of the Rails World conference app, I didn’t have...