Today we’re building a component that is common but deceptively tricky to get right — a horizontal slider with a position indicator and navigation buttons.

We’ll have a list of items of an arbitrary length, and our slider will allow folks to scroll to see every item in the list. As they scroll, indicators below the slider will update to show which items are visible on the screen. Clicking on the indicators will scroll the corresponding item into view. The whole thing is pretty fancy.

Here’s what it will look like when we’re finished.


Today’s project pulls together a number of built-in Rails tools, plus a couple of incredibly useful open source projects to build a web application that can convert user-uploaded video files to MP4.

To demonstrate some of the modern parts of the standard Rail stack, we’re going to go further than just building a converter. We will enhance the user experience during the upload and conversion process with Active Storage to handle direct file uploads, Action Cable for real-time updates on the video conversion, and Stimulus to dynamically update the DOM without needing a heavy Javascript framework. When we’re finished, we’ll…


Burning myself out by not following my own advice.

A wooden bench in the desert. On the right side of the bench is a skull and a sign that reads “Please don’t feed the burro”
A wooden bench in the desert. On the right side of the bench is a skull and a sign that reads “Please don’t feed the burro”
A burned out burro, maybe? Photo credit: The author

Near the end of my 10-year tenure at my last job, the company adopted a phrase that I said in passing a few times — “Quit doing stupid shit” — as a quarterly theme.

Was that a great phrase for the company to rally around? Probably not.

Most office workers do some amount of pointless busy work in their day (some more than others, perhaps), but saying that out loud can rub people the wrong way. No one wants to hear that their bosses think they’re doing stupid shit!

The phrasing…


If you’ve spent any time working with Ruby on Rails, you know that using generators can save you from a lot of console commands and copy/pasting from one file to the next. Need a new model? Just run rails g model MyNewModel name:string description:string and you’re set.

Rails covers most of the common use cases for you with built-in generators. If the built-in generators don’t meet your needs, you can get fancy by creating your own custom generators. Custom generators can save you time any time you’re finding yourself running lots of touch commands and copy/pasting boilerplate into new files.


That’s all the JavaScript we need to write, really!

Today we’re going to build a search form that instantly filters results using Ruby on Rails and Stimulus, a “modest” JavaScript framework designed to add small bits of interactivity without a lot of heavy lifting.

When we’re finished, we’ll have a list of Players that users can search by name. As they type in the search box, we’ll make a request to the server for players that match and display the results on the frontend (almost) instantly. Here’s what the end result will look like:


If you use Ruby on Rails, you’ve probably heard of Stimulus, a “modest” JavaScript framework for sprinkling in small bits of JavaScript to your mostly-HTML front-end. Instead of reaching for the monster JavaScript frameworks that have become very popular in recent years, Stimulus gives you the tools to add just enough interactivity while relying on plain-old Rails and HTML as often as possible.

To show you the power and simplicity of Stimulus we’re going to build a simple Stimulus-powered implementation of a commenting form. When we’re finished we’ll have a comment form that skips a page turn and neatly renders…


Photo by Gemma Evans on Unsplash

One of the most damaging pieces of advice you can receive as a new product manager is that your job is to say no. This advice, well-meaning and oft-repeated, isn’t wrong but when taken at face value it is incredibly damaging.

Your job as a product manager is not saying no; your job is saying yes to the right things.

This might seem like a silly distinction — in either case, you’re saying no a lot, right? — but your mindset makes all the difference.

How you perceive the idea

When you define your core function as saying no, you approach every new idea closed…


A tree standing alone in a yellow field
A tree standing alone in a yellow field
Photo by Dave Hoefler on Unsplash

Product managers love building new things. It is a driving force behind why many of us decide on this career path; we get to spend all day figuring out what cool new thing to build next.

This love of building stuff serves us well in the early days of a product. Everything is new, you don’t have many users, and you are missing core components of your product’s value proposition. Delivering new features quickly helps you find problems that your users want you to solve before you run out of cash.

Eventually, if you build the right things and all…


Dozens of cords plugged into a single device, multi-colored and not as poorly organized as they could be.
Dozens of cords plugged into a single device, multi-colored and not as poorly organized as they could be.
Photo by Victor Barrios on Unsplash

The world of product management is noisy. Your clients are asking for new features. Your sales team needs a magical new feature to close their next deal. Your success team heard from 50 people yesterday about gaps in your product. Noise is coming in from every direction, all of the time.

Learning to process a constant barrage of information from disparate sources into a coherent product vision is vital to success as a product manager.

One mistake that product managers make is becoming too focused on a single input channel. Most often, this happens when a single source is the…


An artfully presented board with moveable letters that reads “Turn ideas into reality”
An artfully presented board with moveable letters that reads “Turn ideas into reality”
Photo by Mika Baumeister on Unsplash

Here’s the scenario: You are a non-product person working at a SaaS company. You’re in customer success and you spend your days building relationships with clients, teaching them how to use your product to meet their business goals. You receive a steady stream of product feedback from your clients, and between that feedback and your own thoughts, you’ve got a long list of feature requests that you want to share with your product team.

Because you care about your clients and your product, your goal is to get your feature request ideas picked up by your product managers — how…

David Colby

Product and engineering leader turned solo founder. I care about being kind, helping others grow, and building cool things. Infrequent tweets @davidcolbyatx

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store