Thanks for creating this - it looks interesting. Contributions like this are really needed in the Ruby community
I believe Andrew Kane is also a the author of pgvector[0], pgvector-ruby[1], and neighbor[2], all of which are pretty sweet!
Plus a bunch of other stuff[3].
Maybe he solved AI/ML by himself long ago and is using that to be this productive.
[0] https://github.com/pgvector/pgvector
[1] https://github.com/pgvector/pgvector-ruby
Also:
- Chartkick, a charting library for Ruby
- Ahoy, a Rails analytics library
- Searchkick, a Rails search library
There are over 370 repos in his Github profile...
And blazer[0], the closest thing to a perfect BI tool. It has a SQL editor/runner, saved queries, audit history, dashboards, alerts and user access control; all in a rails engine you can mount with minimal configuration.
Blazer is my favourite BI tool by a country mile. It does all I want with no fuss, is a breeze to set up and it's so much faster and more efficient than any of the other BI tools I've tried.
what the heck? has anyone interviewed him? i'd love to learn more about how he works
FWIW it’s 199 source repos (excluding forks). Still insanely, wildly productive if even 25% of those are substantive projects!
PgHero is also from him I believe. Very helpful to identify slow queries in production, remove duplicate indexes, see missing indexes, keep an eye on table size, etc.
He's also done a ton outside the AI space:
https://github.com/ankane/pretender makes it super easy to impersonate a different user in a rails app
https://github.com/ankane/ahoy is first party analytics for rails
https://github.com/ankane/blazer is BI built into rails
https://github.com/ankane/field_test is A/B testing
This kind of stuff is why rails is so productive for a normal web app. Sure, there are better vendor and point solutions for each of these, but the ability to drop in a gem, do some configuration and have a 80% solution lets you ship so. damn. fast.
Ahoy, blazer and field_test form the basis of our very strong no-BS data infra. It is so simple.
I still want to try and combine ahoy with a column store in postgres so that we can run the analytical queries straight onto postgres instead of syncing the events to BigQuery.
I've tried using pg_analytics by Paradedb but they don't support json columns, which is necessary with ahoy. Performance wise that would be ideal though.
ParadeDB founder here -- We migrated the pg_analytics project to its own repo and will be adding JSON support!
One of the most prolific people that I am aware of.
We use so many tools from Andrew Kane in our production repo. His packages make it possible to build an AI application using Rails.
For anyone using Ruby who doesn't know ankane already, there are some very useful tools in his github ... like /disco which is a super simple collaborative filtering implemention if you want to quickly drop some recommendation in somewhere
If you are looking for anything ML related with Ruby ankane has usually had a look already ...
Seriously, is this guy human? I'd invest a billion dollars in any individual so talented...
I'm 100th as talented and would consider accepting a $10M investment.
I'm sure it's not why he does it, but I just nominated ankane for the Rails 2024 Luminary award, if anyone else wanted to express their gratitude.. https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...
Seconded. The sheer volume of useful work Ankane puts out for the community is unreal.
How does one person end up being this productive? With I assume a pretty busy life of work, family, etc…
Ankane single handedly is contributing so much back to the industry, in so many ways. Wild!
Ankane's Onnx runtime for ruby is so easy to use that makes you wonder why the official repo for js is so difficult to understand. This guy's a hero, although I'm only scratching the surface for what he has done.
wait, but why?
Andrew Kane and Chris Oliver are the best of the best in the ruby community IMO. Even if I don't use all their contributions, they are most welcome.
Some amazing tools from this guy : hip hip hooray for more :)
Any plans for implementing coreference resolution, similar to the FastCoref?
I can’t describe how thankful I am for Ankanes gems, the stuff hes created has been essential for some of my apps. He fills the gap on the ecosystem in my opinion.
They really are.
The lack of such contributions -in general- or the speed at which they appear, is what leads me to conclude that the Ruby community is slowing down.
In this case, suddenly there's an awesome library for Ruby. Which is fantastic. An achievement to be very thankful for. But "the community" "produced" this months or years after such libs landed for Python, JS, TS, Rust, Go and so on.
Not just ML/AI, same happens for "gems" (Ruby libs) that deal with any new tech. It used to be that any SAAS or startup would offer official Rubygems from the get-go. Often before offering other platforms or languages. Today, when I want or need to integrate something, from notion to slack to cloudflare: no Ruby option or at least no official one.
This saddens me. Ruby is so much more than Rails (for which I can understand the reluctance or "hate"). Ruby is so much nicer to work in than Python and certainly than JavaScript. Ruby could easily have been what Python is today and tens of thousands of developers would be just a little happier than they are now, I am certain.
This is such an odd comment to me.
On the one hand, you praise Ruby, and lament that it gains such libraries so much later than other languages.
On the other hand...if you were paying attention to the "Python, JS, TS, Rust, Go and so on" ecosystems, and noticed the ML/AI work, why didn't you create one for Ruby yourself?
I guarantee that whatever answer you give doesn't matter, because every other Rubyist has their own reply. A "community" begins with one person doing the thing.
And a community thrives with many one-persons combining their effort and keep doing so.
I have made many libraries (gems), OpenSource. Some paid, many just for the benefit of this community; your implication that I lament but not put my work and effort up is frankly rather offending.
To continue on this lament: libraries in dynamic languages are rather hard to maintain, due to runtime constraints that progress/change over time. And the one thing I see is a dwindling usage. Less issues filed (good! ;), less downloads, less integrations, less praise, etc etc.
The more I pay attention, the more I see the Ruby community dwindling. I hope this is merely Rails dwindling - I frankly won't mind if Rails is replaced -, but I fear that Ruby = Rails in practicality. And that Ruby is on the way to the COBOL or Perl.
This, I lament, because I think Ruby is, in the niche of dynamic scripting languages, by far the nicest, cleanest and fun to work with. It's tooling and syntax far more consistent and sensible than Pythons. It's concepts far better thought out and much nicer executed than PHPs. And, sorry, everything can be better than JavaScript without much effort.
So, to me it makes no sense to make Ruby the next Python or PHP, because it's already much better, IMO. It's just not used as often. One extra person using it, doesn't change that.
And, it makes even less sense to make Ruby more like Go or Rust, because if I need Rust, I'd pick Rust instead of spending years of my life making Ruby more like Rust (i.e. invest in a type system, some compile stuff etc).
And when I need e.g. WASM runtime (in say serverless functions) or integration of some new fancy SAAS, or LangChain alike tooling, why would I poor months or years of effort into building tooling to compile to WASM, build gems around said SAAS, or help with tools like Transformers for Ruby, when I can pick Go or Rust to compile to wasm today, grab the Typescript package for the SAAS today, or learn, use (and dislike) Langchain in python today as well?
My desktop is almost all Ruby. Ruby is not going away for decades.
I've just started replacing my shell with a shell in Ruby too. To me one of the nice things about Ruby is that I feel like I can get things done so easily it doesn't matter if the community is smaller. Almost all the code I use apart from the kernel, Chrome and Xorg is now my own.
Do tell us more on how you use Ruby everywhere? I use Ruby exclusively for scripts (I love built-in inline deps with bundler/inline).
My X11 window manager is pure Ruby: https://github.com/vidarh/rubywm That was posted to HN a while back. It's a minimalist tiling wm.
My file manager is (very simplistic, I do most of my actual file management from the shell - it's in effect mostly a desktop launcher) Ruby
It, as well as my desktop switcher (also Ruby) depends on pure Ruby X11 bindings, and a pure Ruby TrueType font renderer:
So does my Ruby terminal (what's on Github is nothing like the full version, which I will package up and push one of these days).My editor is also pure Ruby, using Rouge (Ruby; not mine) for syntax highlighting. That also needs a major update on Github - what's there probably won't even run for others because my personal "ecosystem" on my system is full of helpers and these things are written to be as minimalist as possible so e.g. my editors "file open" dialog is a 2-3 line wrapper around dmenu.
And I've just replaced my shell with Ruby - but that's just for interactive use, so it's very tiny.
Very cool, thanks. I'd switch to a Ruby WM in a heartbeat if it worked on Wayland.
Unfortunately, that's a vastly larger job than an X11 wm because you're either implementing a full display server or need to create bindings to something like Wlroots - under X the wm is close to just another client of the X server.
Not just everyone is skilled enough to make great libraries. There is always going to be an order of magnitude more people interested in using a premade library than are going to be capable of making one themselves. Even if ability wasn't a factor, time often is.
k
I have worked both at Ruby and Python shops.
The average Ruby dev works at a mid to small sized company, probably a startup, and they are usually contributing to some proprietary SaaS product on top of Rails. Progress is always happening in the Ruby / Rails world but it's really slow.
On the other hand, Python has three popular web frameworks and a huge data tooling ecosystem that just keeps getting better. It's just easier to get things done with Python these days and the gap is so huge that I can understand OP.
No one person can create enough libraries to maintain an entire ecosystem (although the guy who made this transformer library is pretty close), so even if the person you responded to did create a few libraries, their problem wouldn’t be solved.
That conclusion was apparent awhile ago.
https://trends.stackoverflow.co/?tags=ruby,python,php,typesc...
It look like a decline but these are relative numbers right? The whole industry exploded in size over this time period.
Does it matter if it's relative or absolute?
A relative decline in a segment where the overall total is growing might mean that the segment’s absolute number hasn’t gone down at all.
That’s like grasping at straws to avoid the truth. If the ratio of developers using ruby is dropping, the popularity of it is dropping.
Everything is ML focused now, and python is unfortunately the language most data scientists prefer.
Can you give me some examples? This seems like an interesting problem.
Examples of what? Missing gems?
I mentioned a few already. Some more that I recently ran into, are in the niche of "verifiable credentials", SSI and DIID. A weird niche, but relevant to my current work.
There's plenty of work, references, implementations, type-systems for TS, Rust, Python and even .net. But nothing significant (a very few experiments at most) in Ruby.
There's little support for WASM, eventhough that's a promising tech to run and manage backend stuff as well as maybe someday client-side stuff already. There's little tooling to manage cloud infra in Ruby (Chef and Puppet still chugging along, but hardly as omnipresent as Ansible etc)
PHP, Python, Typescript: typing is emerging everywhere, albeit "bolted on". Ruby has efforts in this direction, but far behind the ones mentioned above.
There's no practical "frameworks" or libraries to make games. Very few frameworks or tooling to build desktop software. There's little effort around architectural concepts like Event Sourcing, Hexagonal architecture, Actors and so on. They are there, but I suspect overshadowed by Rails and far less used and documented than their counterparts in other ecosystems.
I actually dropped Ruby due to lack of typing, if Rails/Ruby gets static typing maybe people like me will come back.
Another problem was lack of concurrency, I don't know if that is still an issue today.
Not every language needs/should have static typing, so sounds like you just found a better language for your own needs, doesn't mean Ruby has to change. Personally I think it's perfect as it is :)
Same here.
But having worked with PHP and Python, who having typing annotations like Ruby can have through addons (sorbet) and might get to core someday, I would not go back to Ruby if it got this.
Typing annotations in PHP or Python are hardly useful to me. Their net benefits aren't there for me.
So, rather than trying to make Ruby (or Python, or PHP) like Rust, or .net or Java, why not just pick Rust, .net or Java instead? When I don't need typing, I'll gladly pick ruby still. But when I do, I don't want to shoehorn Ruby into something it was never designed to be, but instead pick an option that has typing designed into its core.
I find the ruby gem ecosystem significantly richer than any another. Maybe not by sheer quality, which quickly translates to millions of abandoned libraries (I’m looking at you nom), but certainly quality.
It’s also recently on the rise in general.
Such absolutely wild takes here. I think ruby is the worst language I have ever used, especially with rails.
I’m not surprised at all that the ruby ecosystem is dying, people have been complaining about its magic-ness for a decade and it’s still a problem today.
Competitive pressure on SaaS companies and startups is much higher now and while there are tons of people are building client wrappers and other much more exciting stuff in Ruby none of its getting extracted, polished and open-sourced because everyone is entirely justifiably freaking out about profitability.