29
14 Comments

How I Found Side Project Success Without Using Big Name Apps

Hello! What's your background, and what are you working on?

Hi! My name is Jake Lazaroff, and I'm a designer, programmer, and musician living in New York City. Other than my full-time job, the two projects I'm most focused on are my band babygotbacktalk and my app SongRender.

SongRender is a web app that lets you make music visualizer videos, which are videos with graphics that move in sync with the audio track. I made it for people who want to promote audio online. Usually, that means musicians and podcasters.

Right now, SongRender is making just under $100/month from recurring subscriptions, and around $600/month from individual sales.

home

What motivated you to get started with SongRender?

One weird thing about modern social media is that it's actually fairly difficult to share audio without it being attached to some sort of video. For example, Twitter won't let you preview audio content in your feed, and you can't post audio to Instagram at all.

When I was brainstorming how to promote my band, I noticed that a lot of YouTube channels would use a video with the album art and a little waveform at the bottom to visualize the music. Honestly, I had no intention of building an app at first. If I'd found a cheap and easy-to-use solution, I would have just used it. But the only options seemed to be really clunky web–based services, or investing in and learning complicated software like AfterEffects. The thing that really killed the existing services for me was that they only offered static previews, and you had to actually go and render your video to see what it would look like in the end.

Beyond that, I didn't do much formal validation. I knew I wanted to make these videos, and I'd already found some fairly successful competitors in trying to find an existing product, so I guessed that there was a market. I had a few conversations with other musicians, and I talked to my brother who has done marketing for major record labels.

What went into building the initial product?

Building the first version took about five months. I knew how to build a web app, but I didn't know anything about audio visualization, so a lot of the initial work was just researching how to actually build the product. I spent a lot of time on the Stack Exchange for digital signal processing. I still don't really have a lot of the math behind it down solid, but I figured out enough to at least make something that works well enough.

Putting art out into the world makes the world better

The MVP was very bare-bones. There were no user accounts, and you couldn't save data. You had to upload your music and artwork and create your video all in one session, without closing the browser tab, and it would email you a link to the video when it finished rendering. You could only make one video at a time, and there were no subscriptions. In short, I figured out the bare minimum I needed to make a video for my own band, and built towards that.

Modern cloud infrastructure is amazing; other than the domain name, there was basically no upfront investment needed to get off the ground.

What's your tech stack?

SongRender uses React on the front end and Node.js on the back end. I chose React because I was already familiar with it, and because the community is the biggest of any front-end framework by far. I chose Node out of necessity: I needed the same rendering code to run in the browser and on the server, which meant using JavaScript.

The most difficult part of getting this up and running was figuring out how the rendering was going to work. After I finished the algorithm, the software side of things came together fairly quickly: Node-canvas renders individual frames which ffmpeg turns into a video.

But the infrastructure was a bit trickier. Initially I thought it would be a natural fit for serverless functions, but most cloud providers didn't provide enough running time or memory. Eventually I settled on the current setup, which is a plain Node server pulling jobs off a Redis queue.

The infrastructure mostly runs on Netlify and DigitalOcean, with a handful of supporting services. Early on I decided to avoid supporting tech giants, mostly because they all engage in practices I consider unethical, though it also feels nice as a small business to support other companies up against giant incumbents.

One thing that helps me is keeping the tech stack as simple and standard as possible. I try to embody the ethos of Marco Arment's Web Hosting For App Developers and Dan McKinley's Choose Boring Technology. The servers are basic Linux boxes, the database is Postgres and the API uses REST. React is the only big front-end dependency; I haven't used Redux or Mobx or sagas or anything like that.

You made it a point to avoid products from tech giants, and your website features some especially scathing opinions on Google. Has this approach resulted in any unique struggles or surprising benefits?

I haven't struggled with it at all. A lot of their offerings tend to be very commoditized. It's actually pretty easy to find alternatives for most services tech giants offer: Fastmail instead of Gmail, GitLab instead of GitHub, etc.

And in many cases, I think the smaller products tend to be more focused and polished. Google Analytics feels slow and clunky, and I don't know what half of the numbers mean, but I always have a good time looking at my Fathom dashboard. DigitalOcean's web interface is a million times less painful than AWS's.

On the other hand, I've had to make peace with the fact that tech giants will often be a transitive dependency of smaller services I use. I'd have to cut myself off from the entire Internet if I couldn't use services with a big tech company anywhere in the stack.

How have you attracted users and grown SongRender?

I launched right here on Indie Hackers!

Launch day was fairly quiet. I posted links to my socials and to some relevant subreddits. The most effective was r/musicmarketing, which despite having a relatively small community, actually resulted in sales! Seeing results on day one was super encouraging. It felt like I was really doing something right.

Unfortunately, other than an effective post on Designer News in March, traffic and revenue stagnated for the next few months.

Month Visitors
Feb '19 342
Apr '19 286
Jun '19 122
Aug '19 92
Oct '19 156
Dec '19 174
Feb '20 1089
Apr '20 675
Jun '20 2194
Aug '20 2740

2019 was a busy year. I moved, got engaged and started planning a wedding, and my band got booked to play a major festival. Right now SongRender is a side gig, and as a result I didn't have much time to work on product or marketing. I wrote about this a bit in my recap blog post on SongRender's first birthday, but it can be difficult and lonely trying to balance a side project with a job, other hobbies and relationships.

My main promotional strategy was posting on relevant subreddits. They were largely responsible for my traffic and revenue throughout 2019, but ultimately I think it's unlikely to fuel explosive growth. Most communities on Reddit are highly allergic to self–promotion, so I tended to stick to dedicated promo threads which predictably get less engagement than the communities as a whole.

Smaller link aggregators have done next to nothing for me. I submitted SongRender to all the ones I could find: BetaList, AlternativeTo, etc. Maybe they gave SongRender a marginal SEO boost, but they drove very little traffic. Although it's worth noting that the audiences tend to be people involved in tech, which doesn't necessarily overlap with my customer base. Larger aggregators like Designer News and Product Hunt were successful at driving traffic, but had very low conversion rates.

I tried cold outreach to bloggers, but got basically nowhere.

Search engine placement has been very helpful. Over the past year and a half, SongRender's search traffic has slowly risen to around 3,000 clicks per month.

The single biggest driver of traffic and revenue ended up being dumb luck: a website called LightMV included SongRender in their highly ranked roundup of best free audio visualizers online. It's by far the biggest referrer to the app, eclipsing even the SongRender marketing website.

One big takeaway here is that you shouldn't worry too much about the "obligatory" launching pads like Product Hunt or Hacker News. Not because it's unlikely that you'll make it to the top; rather, even if you do, it's just far more effective to be featured by someone whose audience aligns with your customer base, even if that audience is smaller. The corollary is that not reaching out to bloggers and musicians probably means leaving money in the table, so that's going to be a central part of my marketing strategy going forward.

songrender's pricing scale

There’s one last growth strategy that’s unique to SongRender: an unlimited free tier, with the caveat that videos have a watermark in the corner. I know people go either way on offering free tiers as a bootstrapped developer, but I see the watermark as a win/win. If users don't want to pay remove the watermark, SongRender gets free advertising when they share their video. I can infer which traffic is driven by watermarks by looking at branded search queries (searching specifically for “songrender”). In February, a spike in those queries resulted in more traffic than my Product Hunt launch!

What's your business model, and how have you grown your revenue?

In November I released what I consider to be SongRender v2. I added user accounts, the ability to save projects and a list of all your renders. That was a huge user experience win, and it unblocked a lot of features, including one crucially important one: price tiers.

SongRender v1 didn't store anything other than the rendered videos, so people had to buy one-off videos for $5 each. But now that I had user accounts, I added the ability to buy bundles of videos. This was immediately effective; February's revenue was almost twice January's, despite only having a couple more purchases. A few months later, I finally added monthly subscriptions, which have been growing slowly but steadily.

Another way I've increased revenue is by finding the points at which someone is most likely to want to buy something. For example, a lot of people render a video with a watermark, then pay to re-render it without one. When I realized that, I added a prompt to immediately re-render when users went to download watermarked videos. By my estimate, this has resulted in at least 15 to 20 sales.

Month Visitors
Feb '19 48
Apr '19 17
Jun '19 24
Aug '19 74
Oct '19 19
Dec '19 39
Feb '20 60
Apr '20 70
Jun '20 595
Aug '20 705

Have you reached monthly profitability?

Yep. SongRender is profitable monthly now, which feels GREAT to be able to say. It’s a little hard to forecast since most of the revenue is from individual sales rather than subscriptions, and the DigitalOcean bill varies depending on how many videos people render.

Profit last month was around $470 and this month is looking even better!

SongRender is currently a side project, and you saw most of your growth in 2019. How has COVID-19 impacted it? Do you have more time to work on the app? Has it generated different product concerns?

I don't think COVID-19 had a particular impact. I haven't heard anything from my users that it affected their usage one way or the other.

Being stuck indoors let me work on it when I would have otherwise had social obligations, I suppose.

But the lockdown period has still been really busy for me: in addition to working on SongRender, I finished recording and released an album with my band, and replanned a wedding with my now-wife. Not exactly a tranquil productivity period!

It blows my mind how many different projects you're juggling. How much time — either daily or weekly — have you been putting into SongRender?

Honestly, the time I can put into SongRender varies wildly from week to week, and even from month to month. The most stressful time recently was probably this past July, when I had just formed an LLC and my band put our album out. It’s hard to gauge exactly, but I’d bet there were a couple weeks I put in 15-20 hours. Obviously having two time-intensive projects at the same time is not ideal, but I guess having exciting things happening for each of them gave me energy.

What’s more sustainable is if I alternate between projects. So for example, when my band was recording our album last year, or preparing to play at Afropunk, there were weeks where I’d get in maybe an hour of work on SongRender total, if that. And on the flip side, there are periods where the band isn’t demanding and I can put in a lot of work on SongRender. I would say the absolute most time I put into SongRender in a day is 3–4 hours on a weekday, and maybe 5–6 hours on a weekend.

Burnout is also real! After putting in a ton of work this summer, the past month and a half I’ve been taking a bit of a break from both the band and from SongRender. Now I’m starting to pick it back up again, though — can’t stay away for too long. My life would probably be easier if I could pace myself, but when I get into something I tend to get o b s e s s e d and think about it constantly.

I guess you’re right, I do have a lot of projects — which is kind of funny because I always feel like I to hold myself back. I wish I could draw as much as I used to, and I’d love to get into game development or board game design, and I have all sorts of ideas for different apps, and other genres of music I want to explore… basically, it’s very hard to keep myself from starting a ton of new things I’d never be able to finish, haha. Sometimes I worry that if I were able to focus on just one thing it would be much likelier to succeed, but I just don’t think I could bring myself to do it.

What are your goals for the future?

I'm a very intrinsically motivated person. Ultimately my goal is creative freedom. Working a 9–5 job takes a lot of time that I could use to build other apps, or produce music, or design games, or draw, or write...

I would love to have SongRender become a lifestyle business that can sustain my family and me, so I can pursue other creative activities that I don't have bandwidth for right now.

What are the biggest challenges you've faced and obstacles you've overcome?

Being happy with my infrastructure! I've probably wasted more time on technology decisions and ops than anything else.

Do I use serverless, or containers, or plain servers?

Should I set up continuous deployment?

It's easy to fall into the trap of thinking these are important things, and they can be fun to do, but ultimately users don't care.

Have you found anything particularly helpful or advantageous?

The thing that keeps me going is that I genuinely care about SongRender. Even when I burn out and take a break, it's not long before I start thinking about some new feature to implement or something to refactor.

Find something you care about intrinsically.

Using it for my own music has given me a ton of ideas. If you're anything like me, my advice would be to find something you care about intrinsically. I don't know that I could have kept going for this long if I didn't.

Social causes seem really important to you. Do you feel like SongRender specifically helps make the world a better place?

That's a pretty big question! I think it's worth digging into what it means to make the world a better place. Obviously SongRender isn't helping fight climate change or systemic racism.

There's a blog post by Eevee that I think about sometimes. A reader asks what her personal utopia looks like, and her answer comes down to "I want everyone to have the freedom to make things." I share that vision. The reason I got into programming was because spent my childhood drawing and designing, and I wanted to take some of those ideas and make them tangible in a way that pencil and paper wasn't. I taught myself guitar because when I stop listening to music that other people have made, I start hearing music that no one has made yet, and I have to bring it into the real world.

There's a large part of me that feels like art is intrinsically a good thing; that, in broad strokes, putting art out into the world makes the world better. So in that sense, if SongRender can help people get their art out there, or if the videos themselves are the art that someone wants to make, then yeah, I do think it helps make the world a slightly better place.

What's your advice for indie hackers who are just starting out?

To me, building a business feels a lot like being in a band. In the moment, it’s easy to think that playing a big gig or getting featured by a popular website has the potential to blow you up. In reality, though, you grow by practicing, by making the best music you can and by relentlessly chasing opportunities and fans.

songrender in action

Of course, that doesn’t mean you should totally forget the Product Hunt launch. But remember that one acute event has a negligible impact compared to the cumulative effect of iteratively improving your product, promoting it and finding customers.

Where can we go to learn more?

You can check out SongRender at songrender.com, or follow it on Twitter or Instagram.

My personal web presence is at jake.nyc and on Twitter.

Last but not least, you can find my band babygotbacktalk on Bandcamp, Twitter and Instagram. We just released our debut album “Genre Reveal Party”: Give it a listen!

  1. 1

    This is brilliant, I’ve love how you’ve approached and done this without big tech where possible, awesome stuff!

  2. 1

    thank you for sharing.

  3. 1

    Thanks for sharing ✌️

  4. 1

    This is so good, honest and practical sharing. I love the part about getting traffic, it is true that the more popular the channel is (e.g. PH), the less useful it is. The key is really to find niche, relevant traffic source, and it is hard. Thanks for motivating us!

  5. 1

    Hey Jake, an amazing interview, thanks!

    Was just wondering, you've mentioned Designer News driving traffic/sales. It's a bit weird, because they attract actual designers, not musicians. Or is it that a good % of designers are musicians as well (after all, both are creative professions)?

    1. 1

      Designer News drove a lot of traffic but not many sales. I think it's for the exact reason you mentioned — they attract designers, not musicians. Sorry if that was unclear!

      1. 1

        Got it. I was surprised it drove any sales at all though. Made sense for BetaList (most of the users there are techies, not the artist type), but was surprised when I heard that Designer News worked at all.

  6. 1

    Nice going! I'm also working on a social media video tool but in the spoken word niche. Looks like our tech stacks are very similar—I too want the immediate preview that using Canvas provides.

    Are you using the WebAudio API to get the frequency info from the audio?

    1. 1

      Kind of! In the browser, I do that for non-WAV formats because I haven't gotten around to doing conversion from mp3/m4a/etc myself. On the server, though, there's no WebAudio API, so I have to do it myself. I use ffmpeg to convert the audio to WAV and then run it through a fast Fourier transform.

      As I mentioned in the interview, I'm not an expert on signal processing math. I just use an FFT implementation I found online: https://www.nayuki.io/page/free-small-fft-in-multiple-languages

      1. 1

        Aah, so you’re doing the FFT in JS on the server?

        If so I imagine you could cut processing time a lot by running it through some optimized command line utility.

        Something like this maybe? http://www.fftw.org/

        1. 1

          I don't think that would be better — you have to take a separate FFT for the samples in each frame, so for a three minute song at 30fps you'd need to run the command line utility 5,400 times. I'm not sure what overhead there is in running a command line process from Node, but I'd imagine it's more impactful than the gains from moving from JS to a native language.

          More promising is probably compiling to WASM and running that on both the server and in the browser, which is on my long-term roadmap. But ultimately, the JS FFT runs smoothly in the browser at 60fps so I'm not too worried about the performance impact. I don't have hard numbers, but I would say that rendering in node-canvas and writing the frames to the disk is the biggest server-side bottleneck.

          1. 1

            You're totally right in that spawing a separate process for each frame would totally eat up any gains from running a more efficient FFT. I meant processing the file in its entirety once and then passing the cooked frequency data into the renderer. After som searching I'm surprised that there isn't any command-line utility that can batch process an entire file and output a DAT or JSON with the frequencies split per "frame window". Kind of like how BBC's audiowaveform outputs all peaks in one file.

            Do you run the renderer in parallell or the whole thing in sequence? If you're doing it sequentially I could share some code I use to pass the frames directly from node-canvas into ffmpeg, removing the need to write them to disk first. It only works when rendering each frame in sequence though.

            1. 1

              I render them in sequence. Thank you, that would be amazing! My email is my first name at songrender.com :)