HNNewShowAskJobs
Built with Tanstack Start
Ruby Video – On a mission to index all Ruby conferences(rubyvideo.dev)
289 points by faebi 7 months ago | 69 comments
  • rossta7 months ago

    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.

    https://github.com/adrienpoly/rubyvideo

    https://hotwired.dev/

  • voodooEntity7 months ago

    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

    • freedomben7 months ago |parent

      > 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.

      • giancarlostoro7 months ago |parent

        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.

      • voodooEntity7 months ago |parent

        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.

      • 7 months ago |parent
        [deleted]
    • marcoroth7 months ago |parent

      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.

      • voodooEntity7 months ago |parent

        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 :)!

    • freetonik7 months ago |parent

      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.

    • 0cf8612b2e1e7 months ago |parent

      What is different about https://pyvideo.org/ ? That one has been running for many years.

      • vinceguidry7 months ago |parent

        Appears to be user-curated instead of sourced from the YouTube API.

        • 0cf8612b2e1e7 months ago |parent

          I guess give every API response a LLM laundering and there you go.

  • pugio7 months ago

    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.

    • ksec7 months ago |parent

      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.

      • pauillac7 months ago |parent

        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 ?

        • ksec7 months ago |parent

          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.

          • pauillac7 months ago |parent

            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

    • revskill7 months ago |parent

      Activerecord is flaw because of n+1 query issue.

      • pugio7 months ago |parent

        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.

        • ElatedOwl7 months ago |parent

          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.

          • chris123217 months ago |parent

            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

            • ElatedOwl7 months ago |parent

              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

              • Lio7 months ago |parent

                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.

        • 7 months ago |parent
          [deleted]
      • Alifatisk7 months ago |parent

        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.

        • revskill7 months ago |parent

          Only with ActiveRecord pattern you need such kind of hacks to prevent, it's why it's flaw.

          • freedomben7 months ago |parent

            `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.

            • revskill7 months ago |parent

              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.

          • Alifatisk7 months ago |parent

            Hibernate has `JOIN FETCH()`, Django has `select_related()`, Entity has `Include()` and so on ...

      • cpursley7 months ago |parent

        I also dislike Activerecord. The solution to a lot of this is creating database views and interfacing with that.

      • rtcoms7 months ago |parent

        Just use ActiveRecord's`find_by_sql` method

        • revskill7 months ago |parent

          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.

      • izietto7 months ago |parent

        Very much addressed by tools like bullet, prosopite, strict_loading and others

      • jeffmess7 months ago |parent

        [flagged]

        • Alifatisk7 months ago |parent

          Nooo, don't be derogatory

  • searls7 months ago

    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.

    • tmcdonald7 months ago |parent

      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.

    • ksec7 months ago |parent

      >and officially retired from speaking at Rails World

      That is sad to hear. Any reason why ?

  • pilaf7 months ago

    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.

    https://www.rubyvideo.dev/talks/keynote-writing-weird-code

    https://www.youtube.com/watch?v=k6QGq5uGhgU

  • postatic7 months ago

    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)

    • compootr7 months ago |parent

      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

  • gregates7 months ago

    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.

    • marcoroth7 months ago |parent

      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!

  • ciberado7 months ago

    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.

  • kemiller7 months ago

    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?

    • sergiotapia7 months ago |parent

      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.

      • nileshtrivedi7 months ago |parent

        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.

        • gls2ro7 months ago |parent

          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 ?

          • claudiug7 months ago |parent

            the single man has the whole ml libraries on his shoulders :)

    • dismalaf7 months ago |parent

      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...

    • ksec7 months ago |parent

      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 )

      • weaksauce7 months ago |parent

        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.

    • Alifatisk7 months ago |parent

      Yupp, been saying the same. I think the Ruby Team did the right thing to focus on performance for Ruby 3.

    • yboulkaid7 months ago |parent

      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!

      [0]: https://ruby.social/@marcoroth/113665539397868492

  • izik7 months ago

    I was wondering if the same type application exists for Python and there is similar: pyvideo [1]

    [1] https://pyvideo.org/

    • emmanueloga_7 months ago |parent

      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".

      • hombre_fatal7 months ago |parent

        Yet it took five seconds for the pyvideo list to filter once I clicked a letter “G” while the rubyvideo site was instant.

        • pauillac7 months ago |parent

          yes this is exactly the idea all page remains fast even if we need to list 5k speakers on that page

          • weaksauce7 months ago |parent

            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.

    • pauillac7 months ago |parent

      This was actually an inspiration when the project started

  • jpcamara7 months ago

    Such a fantastic resource

  • rashidae7 months ago

    How do you do the indexing? Could you share how you do it?

    • marcoroth7 months ago |parent

      It's all manual, but we have a few scripts that help us extract data from the YouTube API.

  • nonconstant7 months ago

    I'm super grateful to folks for this. It's one of my favorite websites now.

  • mykowebhn7 months ago

    This conference ended years ago, but really glad to see GoGaRuCo in there

  • DaveMcMartin7 months ago

    I feel much more productive with Ruby on Rails than any other solution

  • ferfumarma7 months ago

    I love this! Such a cool idea, and such a great resource.

  • batesy7 months ago

    Wow this is fantastic. Stealing some ideas from this.

  • zb37 months ago

    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..