Some extra notes: Ruby Video is a Rails application backed by SQLite, its frontend powered by Hotwire. It is open source on GitHub. I’d consider the repo a great resource for anyone looking to learn more about how modern Rails apps are built.
So first of all its a very cool project even tho i don't code ruby.
But in case the author of the page is in here, please read the following:
Some years ago i had a similar idea, just instead of ruby-cons i went for defcon videos. I build a page that indexed all defcon talks and even tried to categorize them in terms of topics and difficulty. Added a nice search, and put it out as "defcon.video". It didn't take google long to message me and tell me i had to take it down because its actually forbidden to host an alternative search index if you are using the youtube API. You are not allowed to store the results of youtube API (longer than 24hours if i remember) and as stated before not allowed to offer an alternate search.
While you might argue: why didn't you just state that you don't use the api to grab the data and shutoff the token usage : well because google is not really known to be friendly and i expected them to just close down my whole developer account if i don't follow.
So - in case not all the videos are hand inserted (and even then they might come at you) google definatly will reach out to you and try to force you down. Back when it happend to me i didn't have the time and patience to fight them back so defcon.video was shutdown.
Best of luck tho
> well because google is not really known to be friendly and i expected them to just close down my whole developer account if i don't follow.
and if their algorithm is in a bad mood that day, they'll shut down your personal account(s) as well, and possibly adjacent accounts. Hope you don't rely on personal email or Google Photos or Android if that happens.
This nuke-somebodys-life-from-orbit capability of such a gigantic company is IMHO one of the best arguments for regulatory limits on company size/scope. That's obviously easier said than done and comes with a whole column of cons, but the power imbalance is so unbelievably great and the reach so deep that in some cases I'd rather be on the wrong side of the state than on the wrong side of Google.
I tell people I left Google because of all the weird amount of data harvesting, and they always argue Apple's not any better, but I rarely hear of someone losing their iCloud to the level I hear of people losing their Google Account which is glued to too many damn things.
At this point I assume the only way Google will ever fix their ridiculous ban process is if someone passes a law that forces them to separate these comingled services from losing you access to your email, and essentially in some cases your personal business.
Well that's the reason why im running my private mailserver and the only thing im using google for is actual google services.
I always wondered why people would just give all their personal information to google in terms of mail and files (convenience i know but still..).
But than you see the posts of "google just shutdown my account without any reasoning and i lost everything help!!" here on hackernews and you know exactly why you don't use google for anything but their services.
- [deleted]
The talks are all indexed manually and are stored in yaml files, see: https://github.com/adrienpoly/rubyvideo/tree/main/data.
We are just embedding the video using vlite.js and the YouTube Video ID (which is just embedding an official iframe in the end). So there isn't really an account to "shut down", unless I'm missing something.
That sounds good :) tbh i didn't have the time to check your source. So lets hope google understands it and does not herras you :)!
Oh...
I am currently working on building a curated collection of YouTube channels, with custom search index. Thank you for sharing this, I guess I can't continue. It's a shame.
What is different about https://pyvideo.org/ ? That one has been running for many years.
Appears to be user-curated instead of sourced from the YouTube API.
I guess give every API response a LLM laundering and there you go.
Really nice to see a deployed modern Rails site. I just recently decided to try Rails 8 out for a side-project of mine (Paranoia RPG virtual table top) and had a generally pleasant experience.
The biggest pain point was the lack of Grade A documentation for the best way to use ActionCable and Turbo – information is spread out between Rails Guides, API docs, and then the Turbo / Stimulus documentation. The actual API docs do a poor job of explaining basic concepts like "streamables", and I kept wondering if I was doing things the "right"/idiomatic way.
Still, as always, ActiveRecord is my biggest draw for Rails, and the new first-class Sqlite integrations are a huge draw for me. I've yet to find an ORM that allows me to be anywhere near as productive.
Anyone know what are they using for Analytics?
Edit: Search is nice as well.
>>Really nice to see a deployed modern Rails site.
Yes. And it is also a showcase what I want for 90-95% of the web. Useful as an example next time we have yet another MPA vs SPA or SSR vs CSR argument. It doesn't need to be a complex SPA. Although I must admit the response time isn't perfect even with Cloudflare.
analytics is built with ahoy https://github.com/ankane/ahoy. the project is open source if you need more details https://github.com/adrienpoly/rubyvideo
Hosting is in Europe on Hetzner maybe it explains your response time. Where are you located?
what are the response time you are getting ?
Right now in Hong Kong, getting about 240 - 260ms RTT.
It is probably good enough for 95% of people. I am what I call latency sensitive.
But I think the main culprit is surprisingly view transition isn't as good as I thought. Because the slight lag / jank I feel happens on Chrome. While I dont feel this on Firefox or Safari 17.6 which isn't supported yet.
yes view transition when enabled are applied to all pages and create a blend effect by default which can maybe give this slowness effet?
I will check if we can prevent this default effect and only use page transition when needed
Activerecord is flaw because of n+1 query issue.
n+1 queries can be solved in many different ways – you can easily do`User.all.includes(:character_sheet)` for example, to perform just 2 queries: 1 for users, 1 for their character sheet.
The nice thing about first-class production sqlite support is that even if you do end up with n+1 queries, it's not as big a deal: https://www.sqlite.org/np1queryprob.html
Certainly I wouldn't care about it while prototyping. I can always go back and optimize queries with judicious `.joins()` or `.includes()` if it becomes a bottleneck.
I spent 10 years doing C#, and the last 3 doing Ruby. I never thought of N+1 as that big of an issue. These queries are typically fast (1ms * 100 is still only 100ms…) and multithreaded web servers are non blocking on IO like database calls.
But these sporadic elevated response times kept showing up on endpoints, where they’d be hundreds of milliseconds slower than normal, but by some extension of 100ms. Say, normally 5ms, now taking 105ms, or 505ms, or more.
Then I learned about ruby’s non parallel but concurrent model, where within a process only one thread can execute at a time. In most workloads you’ll hit IO quickly, and the threads will play nicely. But if you have a CPU crunching exercise, it’ll delay every other thread waiting to execute by 100ms before it preempts. Now consider you’re doing 10 1ms queries inter process with a greedy thread, and you’re waiting at minimum 1010ms.
Still love Ruby but the process model gave me a reason to hate N+1s.
Since Rails 7.1 we've had https://www.rubydoc.info/github/rails/rails/ActiveRecord%2FR... which actaully does run queries in parallel.
There's also Rails' russian doll caching, which can actaully results in pages with n+1 queries running quicker than ones with preloaded queries. https://rossta.net/blog/n-1-is-a-rails-feature.html
load_async is still concurrency, but not parallelism. The queries themselves can run parallel, but when materializing AR objects e.g., only one thread can run at a time. A greedy thread in process will still subject you to GVL waits
If that’s a problem for you right now I’d suggest giving JRuby a look as it has no GVL and true multithreading.
Hopefully as Ractors mature that problem will be solved for MRI too.
- [deleted]
Use `includes` and it's solved, you make it sound like a huge deeply rooted issue, it's not.
Anyone can achieve n+1 issue with whatever tool they use, it's not ActiveRecord specific.
Only with ActiveRecord pattern you need such kind of hacks to prevent, it's why it's flaw.
`includes` is not a hack. Clearly you prefer implicit over explicit when it comes to SQL generation. That's your prerogative, but I strongly disagree. I don't want the ORM trying be clever on me because it is opaque and complex. I want it to use the function arguments to construct a query, and nothing else. Debugging long-running queries is already complex enough without "clever" code trying to abstract it all away from me. Some things should not be abstracted way. It feels nice when your database is small, but it cuts hard when you start to scale.
No u need includes because when u do a.b.c u forgot to includes. It is the api problem for letting u chaining the related objects without including it.
Hibernate has `JOIN FETCH()`, Django has `select_related()`, Entity has `Include()` and so on ...
I also dislike Activerecord. The solution to a lot of this is creating database views and interfacing with that.
Just use ActiveRecord's`find_by_sql` method
The problem is it's a pain to debug through the call chain a.b.c.d.e to figure out where's the cause.
Very much addressed by tools like bullet, prosopite, strict_loading and others
[flagged]
Nooo, don't be derogatory
I was tickled to scroll down and see my own stupid avatar. Claimed my profile and wrote a note.
Thank you so much to everyone in the Ruby community. I spoke at conferences around the world for 13 years, made a ton of friends, and officially retired from speaking at Rails World in Toronto back in September. Some of the best people I've ever met, and the community transformed my life and career.
Hey Justin - this is probably one of my favourite talks!
https://testdouble.com/insights/the-selfish-programmer
Was lucky to be at the conference when you gave it and it's stuck in my head since. When I'm struggling for motivation or my side projects seem to be just too big I give it another watch.
>and officially retired from speaking at Rails World
That is sad to hear. Any reason why ?
What a great resource, thanks to whoever put this together.
To anyone who enjoys contorting the language to make it do weird things for fun, quines, and those sort of things, I really recommend Tomoya Ishida's talk at RubyKaigi 2024. It's in Japanese, but there are subtitles, and the slides speak for themselves. Some of the more whimsical uses of Ruby I've seen in a while. Keyword to peak your interest: animated quines.
This looks awesome and the site looks like it’s custom built. For anyone looking for a tool I’ve been using Pyro (https://www.pyro.app) to collect startup pitch videos (https://video.heystartup.com)
nice ad for pyro.app but yt-dlp + .txt files are free, offline, and will work forever¹ regardless of the operators' wallets.
1: notwithstanding storage degradation, but I trust myself more than this platform
Still sad that the one ruby conference I spoke at — Steel City Ruby way back in 2014 — left behind no video recordings due to a mixup between the conference organizers and the venue staff.
That's unfortunate... but we can still index the talks from Steel City Ruby, I just added it to the TODO list!
But hey, maybe you get to speak at another Ruby conference in 2025!
Ruby on Reels! :D Great effort, thanks.
I wish there were more sites like this, devoted to particular topics that proved to be valuable enough to be presented in a public talk. I currently use YouTube for this a lot (like most people, I guess). But sadly, count(views) is not always correlated to quality.
Is it just me, or is Ruby experiencing a renaissance of sorts? There has been a bunch of positive press, and the community seems more active and vibrant than ever?
I used to work primarily in Rails from Rails 3 and 4, then stopped to work with Go, then finally Elixir since 2016. For a long while there Rails was left behind with the crazy growth of clientside javascript and react. It was destined to become a BackboneJS/EmberJS of sorts, a once big thing but now dead and legacy.
With Rails 8 they really knocked it out of the park. Now there are real compelling reasons to use Rails 8. The job system, the auth generator, the rich text inputs, the file uploads, shit -- they have so much just baked in and omakase'd to death. It's quite an achievement. And it's beautiful to use. You get a phoenix liveview "feel" without breaking out of Rails vibes. If that makes sense.
I'm using it for a pet project of mine and have a really smooth experience leaving Elixir dayjob and jumping into Rails.
The biggest pain point with Ruby these days is: there is almost no libraries for modern number-crunching techniques of any kind. Only python libraries come out of machine learning community / academia.
It is true that Ruby may not have everything that Python has but it has some.
Can I invite you to browse the repositories here https://github.com/ankane?tab=repositories ?
the single man has the whole ml libraries on his shoulders :)
It is. Ruby on Rails 7 was a massive leap forward in developer experience and 8 is even better.
And on top of that Ruby itself has seen improvements from concurrency and parallelism to straight up speed gains, JITs, etc...
What people used to like about Rails, those haven't changed and it is also much better than before. ( Would still want more on Auth )
Hotwire, with Turbo. It has been improved and used in production for quite some time. This also got boosted a lot with JS front end fatigue.
Performance. Even by default Ruby 3.4 is quite a lot faster than 2.x era. But with YJIT it is in some cases nearly double and ~30-50% faster in Rails.
Whatever performance issues there used to be? We will have 256 Core Server in next 12 months, or 512 CPU Core in Dual Socket Setup. CPU Core is getting cheaper and faster.
I always like to say Ruby is the only Top programming language that doesn't have a big tech backer behind it. And it only recently found one. Shopify could now single handedly sustain the whole Ruby Rails ecosystem. It also means the whole ecosystem gets a lot more resources than it used to. ( YJIT is from Shopify )
they are also spearheading the ruby-lsp and rails-lsp gems and vscode extension which are in heavy development and getting better by the day.
it’s a shame that github, gitlab, airbnb et al aren’t doing more for the ruby ecosystem that they have benefitted from.
Yupp, been saying the same. I think the Ruby Team did the right thing to focus on performance for Ruby 3.
It's not just you. From one of the main contributors to Ruby Video[0]:
2024 is the year with the most Ruby talks in a single year, ever! This is the first time we beat the previous all-time record from 2015! Ruby is so back!
I was wondering if the same type application exists for Python and there is similar: pyvideo [1]
It is similar, but try this:
* Open https://pyvideo.org/speakers.html and scroll down to the bottom.
* Open https://www.rubyvideo.dev/speakers and do the same thing.
The Python page loads instantly, while the Ruby page makes several requests before fully loading. Ironically, it seems to be utilizing a rails feature called "turbo streams".
Yet it took five seconds for the pyvideo list to filter once I clicked a letter “G” while the rubyvideo site was instant.
yes this is exactly the idea all page remains fast even if we need to list 5k speakers on that page
one thing you can do to make the speaker list more performant and seamless is to load the next list of speakers when the scroll gets to some value near the end of the list and also pull a few more speakers in each fetch.
This was actually an inspiration when the project started
Such a fantastic resource
How do you do the indexing? Could you share how you do it?
It's all manual, but we have a few scripts that help us extract data from the YouTube API.
I'm super grateful to folks for this. It's one of my favorite websites now.
This conference ended years ago, but really glad to see GoGaRuCo in there
I feel much more productive with Ruby on Rails than any other solution
I love this! Such a cool idea, and such a great resource.
Wow this is fantastic. Stealing some ideas from this.
I'm sure I'm not the only one who thought this was a new video generation model announcement after reading those first two words..