
Timestamps
DJ Workflow Tool
Ableton Live 12 was released yesterday. I should have anticipated that Timestamps might need an update to support this, but it slipped through the cracks.
But a user quickly emailed my support email after their file failed to be processed.
I booted up my dev environment and got to work. Luckily it was quite straightforward to support Live 12 project files.
I was able to ship the feature within 2 hours and reply back tot he user.
"Wow, thanks so much! I’ll test it for the next mix today"
I don't think that feeling of joy will ever get old - of delighting someone, and beating their expectations. There's just no way a big company can ever match the agility of a small boutique company. There are tradeoffs of course, but responsiveness and support will always be better as a customer of an indie product.
It’s been three years since I launched https://timestamps.me, and a little less than three years since I stopped working on it.
Since March 25th, 2020, here are the stats:
4465 uploads
$437 revenue earned
This works out to about 4 uploads per day, which for me, is a great success.
Rough recap:
Feb 2020: I was taking my gap year and wanted to code again. I had the idea to work on a little tool for exporting locators from Ableton Live sets. I thought it would be fun to just quickly make it into a web app, and ship it. I ended up hyperfocusing on the problem space and making it super high accuracy (handling tempo automation). I also made it work for FL Studio which was difficult but a fun challenge.
March: I launch the web app (timestamps.fm at the time) and start trying to get users. I was extremely difficult. I posted on subreddits for DJing, Ableton, FL Studio, and Rekordbox.
Learnings and mistakes:
I wasted a ton of time porting to Google Cloud in an attempt to make the site run for free. It was an utter failure and I ended up porting back to Heroku.
I spent a ton of time DM’ing music producers that were performing at “e-fests” which were popular at the time (due to Covid-19, which was in full swing at the time). This was doomed to failure — none of them would find value in this niche product.
Ironically, the customer and user that got the most use out of it reached out to me, not the other way around. The CEO of a company that makes a high volume of DJ mixes for hotels and restaurants DM’d me on LinkedIn asking to set up a call. He found me via SEO/Google search and was able to find me on LinkedIn because I had been bold enough to put myself as “CEO, Timestamps.fm” on my LinkedIn profile. Lesson: Be bold!
If I really wanted to do this in a time and capital efficient way, I should have put in way more customer research before building this whole product (including super advanced features like hyper accurate tempo automation support). I didn’t care about this though because I was on my gap year, and was first and foremost doing it because it was a fun programming challenge.
I wasted a ton of time hand coding HTML and modifying a free HTML theme I found online. I eventually rewrote the whole site in Bootstrap which took a bunch of time. The breaking people when I was trying to make a pricing page with different subscription options. It was going terribly with my hand-hacking of the HTML page, and Bootstrap included great looking UI components for this already. Learning Bootstrap was probably a good investment.
If I were to do it again: I would use no-code WAY more. I would try to avoid hand-coding any HTML if at all possible, and just do the minimal amount of code to have an API server running for doing the actual processing.
I put up a donation button. In 3 years, I’ve had 3 donors, for a total of $25 in donations.
I eventually learned that the majority of DJs don’t care about time accurate records for their DJ mixes. A small subset of them do — those that operate in the radio DJ world where they have licensing or reporting requirements. One DJ said they were required to submit timestamps so a radio show could show the track title on their web ui or something like that. But I was later surprised to see the site continuing to get traffic.
Clearly there are some people out there that care. I haven’t bothered to figure out who they are or why. The site continues to be free, with no accounts necessary.
Smart things that I did right:
I had a lot of requests to support of DJ software like Traktor. I ignored them which was a great move — it would have taken a lot more time and wouldn’t have moved the needle on the project.
I negotiated a good rate initially for the commercial customer’s subscription — $40 a month! I then did a questionable move and lowered it significantly to $15 or a so per month when I made it free. The deal was that I would make the site free, but the customer would pay to help me break even on it. I later lowered it even more for them when I switched to Timestamps.me ($~20) which is a much cheaper domain then timestamps.fm ($80). It was a good move to move domains — that domain was a risky liability — if the customer ever left, I would have been stuck with an expensive, vanity domain for no real reason. I wasn’t going to become the next “last.fm” anytime soon.
SEO is the main driver, and continues to be until this day. I dominate the results for “ableton timestamps” etc. Posting on reddit and the Ableton forum were good calls.
I experimented with different monetization strategies. Pay per use was an interesting experiment and I made a small amount of money.
1 Like
Comment
We hit a milestone recently: 4000 files uploaded to Timestamps. It's been slow and steady over the last 2+ years of running — averaging 4 or so uploads per day since March 2020.
I continue to not do much maintenance work. I check on the site usage regularly with a small no-code app I built. The Timestamps backends logs to a google sheet, which acts as the database for an Appsheet no-code app for browsing the upload data and making some graphs.
There was legitimately one bug I fixed. I FL Studio 21 made some change to the way they emit .flp project files that was causing crashes for 1 user. It was a simple patch, but required me to set up the dev env for the first time in a while.
A unique experience that happened was I got in with the lead singer of Weezer of all people. Funnily enough, he commented on my original post in the Ableton subreddit saying he had a similar use case and was interested in this. Ultimately he had a separate solution and didn't use Timestamps, but it was still very cool to be in touch with him.
https://www.reddit.com/r/ableton/comments/fn4a3q/comment/iin63hm
My "enterprise customer" got back in touch recently just to check in. They still pay $10/mo to cover server costs but we haven't spoken in a very long time — maybe 2 years. That's not great on my part. I probably should have checked in more with them since then just to show that I'm still around and here for them.
Overall, things are still going well and I'm happy with where they are. A few uses per day and I'm still thrilled that anyone is using this at all.
4 Likes
Comment
Not too much to report. Timestamps has continued to run on auto-pilot. My "enterprise customer" has continued to pay me $10 per month to keep it running it cover my Heroku costs. In retrospect, decreasing their price so much was a bad idea.
To recap, originally I sold the subscription for $40 a month. Then I decided to make the whole app free again which made it a little awkward to have them pay, so I asked if they'd at least help me break even, which was totally fine. That was ~15/month. I suppose I didn't need to go quite so low, but truly those were about my costs, and I wanted to be honest. That was with the very expensive .fm domain name.
Later on, I decided to de-risk by moving to a cheaper domain (.me) so in case that customer decided to stop paying, I wouldn't be stuck with a $100/year domain to pay for no reason. After that change, I again decreased the price to $10 a month. Not sure why. Just to keep to the original agreement of "help me break even" I guess.
Anyway, things have been running just fine. Still averaging on the order of 3-5 uploads per day. Still no clue who these people are, since there's no login. And honestly, I still don't mind.
Like
Comment
Timestamps has been running entirely on auto-pilot for the last 6+ months. I all I do is check logging every once and again to see what the upload activity has been like, but I haven't touched code in a while. I haven't done sales or any marketing in a long time.
And yet, the site is slowly, slowly growing. It now averages around 5ish uploads a day, from seemingly a more diverse set of users. Previously it was basically only my corporate sponsor using it, along with a handful. Now there are definitely some new people that have discovered it and are using it heavily.
Stepping away and just letting the site grow naturally and do its thing while I go off and do other things was definitely a good move.
Stepping away and letting it run quietly without any efforts at grow is not "giving up". It's making the decision to spend energy on other things, while keeping the option open to resume the project at any time.
1 Like
Comment
I migrated the app to timestamps.me from timestamps.fm. .FM domains are very expensive - this one was $90 per year. The only benefit is branding, but since this project is so ramped down at this point, it's not worth it.
I'm ultimately not paying for that, since I do have my sponsor that covers the site costs, but if they ever drop off, I'll be left with the bill. Given that, I decided to move it over now and get it out of the way.
I've noticed that I'm slowly forgetting more and more of the operational knowledge of how to run the site. I only touch the tech part of it once a month at most, so the finer details of setting up my dev environment, and how everything is configured is starting to slip. I have been taking notes this whole time, which I hope should help with long term maintenance.
I didn't have to pass on the savings to my sponsor, but I did. He's also a small business trying to get by, so I want to be empathetic. So instead of paying me $15/mo, now he's paying $10.
I'm glad I rebranded away from "timestamps.fm" to "Timestamps" earlier. That made this transition much easier. I didn't need to update too much copy on the site -- just links to the site on social media, for the most part.
1 Like
Comment
Timestamps has helped DJs make tracklists for 500 mixes since April. The number is not that high, but each use requires a DJ to spend several hours making a mix, so in that light, I'm still proud.
My original goal was to make a useful website that gets some amount of regular use. Even 1 use daily would make it well worth it. If you do this math, 500 mixes over 4 months averages out to be 4 per day, so I'm very happy with this :)
The majority of the mixes came from my business customer (who is now providing the corporate sponsorship to pay for site costs). Ideally I'd like to make it more balanced, but there still are a good 4ish regular users apart from that business customer. I've also noticed some new people starting to use it.
I'm totally happy with this. I plan to keep it running in the background, and who knows, it might slowly gain traction without me having to do anything. I'm in no rush.
1 Like
Comment
Ultimately I've learned that this is not a good enough problem to turn into any kind of real, money making business. The problem isn't salient enough to really convince enough people to part with their money.
I'd rather have a product that makes no money, but gets wide usage, than have a product that makes $50/month with 2 users. Which is why I've decided to abandon a SaaS model and revert back to free.
But it doesn't end there. I was able to negotiate with the subscribing business customer for them to keep paying $15/month, which is enough to cover the site costs. They agree to keep paying that, even if the site is free in general, which means I can sustainably run a free, useful web product. If I look back to the beginning of this project, because I had even considered monetization, this was the reach goal. Have the site be free, and if I can find some way to break even, all the better. And that's exactly what I've done.
It's been a fun and interesting trip. Despite being back to where I've started, the process of monetizing a web app, implementing payments, selling a contract, etc. has taught me so much.
This is the state I expect to leave the project in for some time while I go off and explore other things. I'm happy that I've found a way to have a happy ending.
1 Like
Comment
I consider my first subscriber a fluke. I didn't even find them, they found Timestamps via searching on Google, contacting me on LinkedIn, and were eager to support. Even though there was some stress, the whole process was a bit of a slam dunk.
This is why I feel it worth it to document getting my Second subscriber. This subscriber is actually traceable through a chain of events that I did.
My first promotional efforts included posting on Reddit. I posted on r/DJs, and got a fair amount of response. This lead to Supporter #1 seeing it and posting it on their twitter, with 2k followers. Supporter #2 ended up seeing it, and it strongly resonated with him. I directly got in touch with Supporter #2 who began my first regular user.
Supporter #2 used it regularly for a while before I was charging for it, then right as I implemented a paywall, they lost their freelance job which was their main reason for using Timestamps. A few weeks pass, and now they got it back, contacted me, and happily signed up for a plan. This is not a huge business plan like the last one, this is a simpler $4/month subscription, but I still feel proud of it in its own way. I feel like I earned this one.
Today I closed my first custom subscription plan, which also happens to be my first subscription. $40/month.
I feel like I'm doing things a bit out of order, but here's how it happened. Timestamps has been operating on a pay per use model for a few weeks now, and shorter after making that switch I got a message on LinkedIn from a Founder of a company that was very interested in using Timestamps. We had an intro call where we introduced, talked about our businesses. He said on that call he'd be happy to pay some kind of subscription. I gave him a promo code for a free unlimited trial for 2 weeks.
Fast forward 2 weeks. We call again to see how it went and discuss next steps. The trial went great, it was useful to them. After a bit of negotiation on the price and volume (uploads), we settled on $40/month, unlimited uploads.
Lessons:
Don't be afraid to put yourself as Founder and CEO of your company on LinkedIn. It's possible I wouldn't have had this opportunity if I hadn't overcome the embarrassment of calling my tiny project a "company" and calling myself "CEO".
You don't need to write a ton of code to have subscription plans. You can actually do so much of it manually with Stripe. Just directly have a sales conversation with a customer, agree on a plan, manually invoice them with Stripe, and then set up a recurring subscription manually in Stripe. It won't scale, but it's totally doable to do your first few subscriptions this way. All you need is some minimal way to grant or restrict access to your service. For me, I am using a very simple promo code implementation I wrote.
Small scale custom plan sales negotiations are very different from "enterprise sales" negotiations. I watched a ton of enterprise sales videos to prepare, and while they were helpful, they were a bit much for how casual of a negotiation this was. That said, it's good to be aware of how to negotiate in a give and take kind of manner, and not necessarily give out discounts for "free".
You don't need lawyers or a formal contract to do business. Technically an email can work as a written agreement. I literally sent an email with a bunch of bullet points after our initial agreement call, and we went back and forth on that a bit, but that's ultimately the form our contract is in. I wouldn't recommend this for managing complex contracts or large sums of money.
2 Likes
Comment
About
I hope that by making it easier for DJs to provide timestamps, listeners will be more able to find music they love, and producers of those songs can receive more credit for their work.


Comment