SoundCloud Developers Blog

developers.soundcloud.com · Company blog · on HN since 2012

SoundCloud's engineering team writes about backend systems such as Prometheus, CRDTs, Scala microservices, and search indexing.

What HN saysHN links it for the Prometheus origin post, and commenters also use it for SoundCloud engineering job listings.
73HN people shared it
30linked it in comments
96stories submitted
570story points
3 months agolast shared
2012people per year2026

Most-shared posts

  1. 1
    Roshi: a CRDT system for timestamped events
    6 people · 113 points · first shared 2014 · 29 comments on HN
  2. 2
    Prometheus: Monitoring at SoundCloud
    5 people · 64 points · first shared 2015 · 4 comments on HN
  3. 3
    Blog
    4 people · first shared 2015
  4. 4
    Garbage Collection in Redux Applications
    3 people · 6 points · first shared 2019 · discussion on HN
  5. 5
  6. 6
    Docs
    3 people · first shared 2012
  7. 7
    Did I break you? Reverse dependency verification
    2 people · 77 points · first shared 2021 · 69 comments on HN
  8. 8
  9. 9
  10. 10
    A Pragmatic Approach to Tech Debt Reduction
    2 people · 5 points · first shared 2018 · discussion on HN
  11. 11
  12. 12
    How to Successfully Hand over Systems
    2 people · 5 points · first shared 2021 · discussion on HN
  13. 13
    Periskop: Exception Monitoring Service
    2 people · 5 points · first shared 2020 · discussion on HN
  14. 14
    Building a Healthy On-Call Culture
    2 people · 4 points · first shared 2021 · discussion on HN
  15. 15
    Radical Candor: An Experience Report
    2 people · 4 points · first shared 2019 · discussion on HN

What HN people wrote when they linked it

thinkmassive · 2024-01-08
It was great for a time. At least Prometheus lives on! https://developers.soundcloud.com/blog/prometheus-monitoring-at-soundc…
aaronlevin · 2016-08-08
Backend Engineer (Scala) | SoundCloud (Discovery/Recommendations) | Berlin | Onsite | Full-time | Relocation I'm an engineer on SoundCloud's Recommendations team. We are looking for scala engineers to help users find lit tracks on the world's largest audio platform. You'll work alongside data scientists and engineers in a stack based on Spark, Scala, Finagle, and Cassandra. SoundCloud is a wonderful place to work and Berlin is an amazing city to live in. I relocated from Canada and haven't looked back. Empfehlungen sind die Zukunft! job link: https://soundcloud.com/jobs/2016-08-04-backend-engineer-discovery-berl… blog: https://developers.soundcloud.com/blog/tracks PS - ping me on LinkedIn (https://www.linkedin.com/in/aaronmblevin) so I can refer you!
cdnsteve · 2015-12-15
I actually found the article from Sam Newman went into greater depth: http://samnewman.io/patterns/architectural/bff/ Interesting to see this creates new problems, such as blocking calls to dependant services downstream, and what services you declare as critical or not. Also duplicate code is unavoidable. So if you're attempting this pattern, keep those things in mind since you will have limited technology choices. Sound Cloud is using Scala here. https://developers.soundcloud.com/blog/building-products-at-soundcloud… Edit: Found their mention of technology
drawkbox · 2013-10-09
Excellent product and targeting, actually almost muttered 'ooooh' after reading your post. I'd also add in some other promotional channels on next iteration like Soundcloud uploads. Promotional and general 'radio' like stations, I find lots of new music at Soundcloud, get started http://developers.soundcloud.com/docs
freeslave · 2012-06-09
Indeed, this app totally violates the YouTube API terms: You aren't allowed to: "separate, isolate, or modify the audio or video components of any YouTube audiovisual content made available through the YouTube API; promote separately the audio or video components of any YouTube audiovisual content made available through the YouTube API; access any portion of any YouTube audiovisual content by any means other than use of a YouTube player or other video player expressly authorized by YouTube;" https://developers.google.com/youtube/terms Why wouldn't you read the API terms and comply with them before wasting all the development effort on something that will only get shut down? My advice is switch to the soundcloud API. http://developers.soundcloud.com/
e12e · 2014-11-09
>> Bit confused on one point -- so SoundCloud revised their ToS to deny downloads, but they kept the download URL in the API response? Amazing that after two different illegal take-downs it just kept getting back on top of the listings. > I think they eat their own dogfood here. As far as I can tell, they have no special privileges for their owned and operated clients. If you for example look into the network panel when using the web client, you'll see that they directly access `api.soundcloud.com`. But it is strange that they in their TOS for the website state: "You must not copy, rip or capture, or attempt to copy, rip or capture, any audio Content from the Platform or any part of the Platform, other than by means of download in circumstances where the relevant Uploader has elected to permit downloads of the relevant item of Content." In other words, they seem to allow users to download content that is available for download. So if I write my own web browser, I'm free to download downloadable content -- but not if I write an app for Soundcloud... Or perhaps, it's this clause: "(x) You must not rent, sell or lease access to the Platform, or any Content on the Platform, although this shall not prevent you from including links from Your Content to any legitimate online download store from where any item of Your Content may be purchased." It's unclear to me how Soundcloud cannot get Firefox for Android banned under this clause as well... (well that would be insane, but…
lurkshark · 2021-08-12
SoundCloud's Roshi database is built on LWW-Element-Sets, but doesn't have an explicitly CRDT-based API. It looks like they no longer use it internally, however. https://developers.soundcloud.com/blog/roshi-a-crdt-system-for-timesta… https://github.com/soundcloud/roshi
kingosticks · 2018-04-16
What's the difference between this and the info publicly available at https://developers.soundcloud.com/docs/api? On a related note, the soundcloud API is horrible. Their solution to rate limiting is to require a client_id and then stop giving them out. So those few client_ids out there get abused by everyone (since they are simple to grab from locally running apps) and nobody can stream anything past a certain point in the day. Such a hack. But hell, at least they have something!
williamallthing · 2017-01-13
amalag · 2017-01-10
Activity streams are such a common use case. It is very interesting that Soundcloud chose to do something different: https://developers.soundcloud.com/blog/roshi-a-crdt-system-for-timesta… Assembling the inbox on demand is quite interesting. I don't quite understand the querying and operations involved with Roshi for doing that.
vmasto · 2016-09-04
Have you checked SoundCloud's implementation? https://developers.soundcloud.com/docs/api/sdks#recording https://github.com/soundcloud/soundcloud-javascript I'm not sure if they solve the problem you face but I know they support Audio recording via their Javascript SDK and I thought it might be useful to you.
jewbacca · 2016-02-11
re pagination/infinite scroll: I had the same problem, it was fucking unbearable to check out peoples' earlier stuff. Luckily, Soundcloud has a very decent public API, which you can use to roll your own narrow client, for whatever you're looking for with the features you want: https://developers.soundcloud.com/docs/api ---- Here, start from my own (extremely crude, for personal use, not for public consumption) "Soundcloud User Unpaginator": Source: https://github.com/gadtfly/Soundcloud-User-Unpaginator/ Running: https://soundcloud-user-unpaginator.herokuapp.com/ (warning: heavy, totally synchronous, server-side blocking, on Heroku free tier) Could be easily modified to download instead of list, if you want an archive.
runn1ng · 2016-02-11
Another anecdote: I have played with their JavaScript API about 2 or 3 years ago and it was constantly broken, with no way to report those bugs. Their support page states "ask on StackOverflow" as it stated back then, which is a terrible way to report bugs. https://developers.soundcloud.com/support
jeffbr13 · 2016-02-11
At my company we have a bunch of content that's only archived on SoundCloud. The main barrier I've had to backing up original uploads (only available through the web interface) is the terrible reliability of all the AJAX calls. Even with browser automation, it requires a LOT of error-handling just to navigate between resources successfully. It seems that all these microservices[1] are there for the sake of blogging about using microservices[2] as there haven't been any new significant new features delivered in years, and the whole application now seems to be delivered through AJAX calls. [1]: https://developers.soundcloud.com/blog/building-products-at-soundcloud… [2]: http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.h…
SeanAnderson · 2016-01-25
Hey, How does this comply with SoundCloud's API Terms of Use? https://developers.soundcloud.com/docs/api/terms-of-use More specifically: > Unacceptable Use > use of the SoundCloud® API to aggregate and stream User Content from multiple users into an on demand listening service; I've built similar things in the past (https://github.com/MeoMix/StreamusChromeExtension), but using SoundCloud's API for such a project always seemed off-limits from a TOS perspective.
dominotw · 2015-12-15
why is this on thoughtworks website when sound cloud has their own dev blog (https://developers.soundcloud.com/blog/)
jrv · 2015-02-10
See also the official announcement blog post by SoundCloud: https://developers.soundcloud.com/blog/prometheus-monitoring-at-soundc…
feralmoan · 2014-05-02
user sessions would get picked up by if you just injected the oembed player dom rather than hand-rolling it (https://developers.soundcloud.com/docs/oembed) - no authentication required.
timthimmaiah · 2014-04-15
The track streaming is openly accessible but there are some rules arround attribution which are required: http://developers.soundcloud.com/docs/api/buttons-logos
moondowner · 2013-12-04
I wish they could use OAuth 2.0 instead of having to type in the password. http://developers.soundcloud.com/docs#authentication
spadgos · 2012-05-09
Hey James, there's no pre-packaged system to do this, but you do have some options: you could use the widget API http://developers.soundcloud.com/docs/html5-widget There's no special insider trickery happening on that page: it's all using the public API to load the sound and then just listening to 'time' events while the track plays to trigger scroll actions.
JonnieCache · 2012-03-05
FYI you can get the streaming url from their public API, you don't have to muck around with string interpolation. They know it's easy to get so they just put it right there in the API for you to use. Also if you used the api you could have your script preferentially download the original file if the artist made it available. http://developers.soundcloud.com/docs/api/tracks Ultimately though the stream is a 128 kbyte/s mp3, probably transcoded, and as such you should all feel slightly ashamed of yourselves :)
sabman · 2012-01-11
Soundcloud's API docs are quite impressive esp. their use of apigee console to test things out in the browser: http://developers.soundcloud.com/docs/ There's also a startup dedicated to (startup) API docs :) http://turnapi.com/
lilbenjivert · 2017-05-01
SoundCloud | Senior Software Engineer, iOS / Engineering Manager | NYC | Onsite, Full-time SoundCloud is an open platform enabling everyone to share and discover audio content all over the world. Here at SoundCloud NYC we’re expanding our monetization & growth engineering team (currently a team of 23) who help build the platform that helps creators make money from their content, listeners gain access to the world's music, and brands engage with SoundCloud's unique audience. We’re looking to add a Senior Software Engineer, iOS and an Engineering Manager to our growing team! If you’re interested in learning more about the challenges our engineers have tackled and our lessons learned check out our developer blog: https://developers.soundcloud.com/blog For more information on the specific roles: Senior Software Engineer, iOS: https://soundcloud.com/jobs/2017-04-06-senior-software-engineer-ios-ne… Engineering Manager, Payments: https://soundcloud.com/jobs/2016-10-27-engineering-manager-payments-ne… Feel free to reach out directly to [email protected] if you have any questions!
rektide · 2015-05-01
I like how JSON-LD lets one embed many resources inside a document. And there are plenty of good preludes to this recent emergence: Soundcloud wrote about how they used an instance store 3 years ago in their clientside to extract all relevant models, and push them into an "instance store" where anyone else might find the data when they need it. https://developers.soundcloud.com/blog/building-the-next-soundcloud What's really exciting is an expressive model that allows code to state what dependencies it has. The transport and fulfillment of needed data- what intermediary stores the data gets to and how pending views are signaled availability- is a more mechanistic, rote, already faced task, albeit one that each company seems to tackle on their own. The step further- declaring and modeling dependencies, is what makes GraphQL an interesting capabilities. Soundcloud's 3 year old blog post is a good reference to show that "instance stores"- these clientside object database services- have been around for a good while, and can be done fine with REST as easily as without.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close