In OSS, there are no sprints, stand-ups, retrospectives, 1:1s, 360s, quarters, velocities, estimations, deadlines, project managers, "how is this going", year goals, ..., could go on and on.
Yet it ships non-stop and runs the world.
Zeitwerk stays at 0 issues, 0 PRs.
Issues or even questions in Rails related to autoloading have virtually vanished.
It is going to be the only loader in Rails 7. It is integrated in Hanami 2.0, and loads dozens of gems.
Was worth it.
GitHub has migrated to Zeitwerk, that is so epic 🎉💪🎉💪🎉💪🎉💪🎉💪🎉.
Every time I hear about the progressive wins in the GitHub code base since the 3.2 days (I think), I can't but think about
@eileencodes
huge effort behind it, hard battles, step by step ❤️.
Zeitwerk has surpassed 200 million downloads, and it is fetched about 400K times per day (this includes CI builds, deploys, etc.).
Besides Rails apps, +360 gems load with Zeitwerk nowadays, designing for any Ruby project was worthwhile.
And it has no known bug 💪.
Have been working from home for the last 14 years.
2006–2009 as co-founder and CTO of a distributed Rails shop.
2009-today as freelance consultant.
Best thing, I have been present for her.
Why am I into high-level languages like Ruby?
It is a choice.
As many of you know, my background is in math. Math is the most rigorous, abstract, and elegant thing I know. The degree (+1 year of PhD) was among the best years in my life.
When I switched to software, my
No language feels like Ruby to me.
Once you've been into it, others look more like formal languages in which you program and can do anything, yes, but with a different level of expressivenes and naturality.
#ruby30th
So, this was an incredibly classy and touching surprise
@RailsSaaS
had prepared. I am so honored.
The award is solid crystal, including the ruby on top. It weights, it reflects light beautifully, and it is really gorgeous.
It'll have a place in my living room.
❤️
Just finished "Sustainable Web Development with Ruby on Rails". Man, this book was missing.
Wise, real-life, first-hand experience content from someone running a SOA architecture with over 50 Rails apps and 200 engineers. No theoretical blackboard bullshit. Totally recommended.
+5x speed up of `constantize` in Rails 7. And becomes a one-liner.
Possible thanks to the extended const_get
@tenderlove
wrote to support constant paths, and to Zeitwerk constant lookup matching Ruby's.
Patch by byroot /cc
@ShopifyEng
🚀
The daily downloads of Zeitwerk nowadays are bout 18% greater than the ones of Rails.
This very raw number suggests the amount of non-Rails projects/gems using it, and Hanami 2 is not even out yet.
That fulfills my vision of designing it for any Ruby project/gem ❤️.
"slave" is a bad word, "cop" is a good word, period.
If you have a problem with your cops, it's the individuals and your system, not the concept.
And let me tell you something, you won't lecture a Catalan about bad cops.
@bbatsov
has my full support.
been actively keeping these two figures down to 0 — and, indeed, there have been no bugs for a long time, questions, small new features, etc. has been the bulk of it 💪
Rails 7 brings another performance boost: AS cache dump/load is 20%–40% faster, and payloads may be reduced in half or more, depends on byte length.
New code is able to parse old entries for a smooth transition.
The Rails Foundation was created 4 months ago, and the first task was to look for an executive director. This takes time, and you cannot operate meanwhile.
Amanda joined last Feb 20, not even a month. Please, give her trust, space, time, and peace ❤️ 🙏.
My Ruby corner at home got a new award. The one to the right in the picture.
It was presented to all members of Rails Core in Amsterdam, celebrating all these years working on Rails.
New side project in which I'd like to share all I have learned about constants in Ruby over the years.
In this book I'll try to be as comprehensive and rigorous as possible, talking to Ruby programmers that want the real thing.
Let's see how far do I get.
just merged Zeitwerk integration into Rails, this was the original motivation for a new autoloader, had a blast cracking this problem and I'm very proud of this work 🎉
There is a tremendous volunteer effort behind the Rails guides: Creation, edition, styling, maintenance, tooling, servers, etc.
It's nice to see people appreciating them.
(Thanks to
@andatki
for sharing.)
I developed Rails Contributors in 2008 and still maintain it.
It makes me very happy that people get credit for their work. That there's a public place where you see it, a recognition to be proud of, and also that people can show it when they look for a job.
❤️
Software development simply does not match fixed timelines, sprints, quarters, or whatever.
These ad-hoc structures belong to the mindset of certain management styles, and in my view it is an error to work with such frameworks.
Who on earth starts a greenfield project with microservices? You know nothing about it.
Monolith first always, except for obvious services like search engines, caches, monitoring, etc.
Be a surgeon later, and only if truly justified.
During the AMA session in Rails World, on the topic of changing careers later in life, I commented I was 30 when I got my first job as a programmer.
Would like to add that, just one week ago, I had the pleasure to have dinner next to the wonderful
@NaijeriaToweett
in Bucharest,
I am really happy that Hanami 2.0 will autoload with Zeitwerk ❤️.
I started the project within AS, but soon realized it was generalizable. So I switched the focus to write a loader that could be used by any Ruby project.
Nowadays, dozens of gems load with Zeitwerk.
Rails 7.1 will ship with official support for custom root namespaces.
That will allow projects to have `app/services` under a `Services` namespace if they like to, with a one-liner.
🎉 Zeitwerk 2.5 is out! 🎉
This ships almost one year of work: New callbacks, Ruby 3.1 compatibility, better performance, docs, traces, a couple of edge bugs fixed, and more things.
Rails 7 requires this version. Should work with Rails 6 too.
So I have written a WS application in
@elixirphoenix
(client work) that receives certain events and among other things publishes them to Kafka. One Elixir node with 4 cores overperforms Kafka (2 nodes, 8 cores each) if replication is enabled. Quite impressive, if you ask me.
Started 2024 working on my book about constants. It's taking shape.
I don't like to talk too much about goals, because one makes plans, and then reality has a different idea. But we are on it!
just realized I have been working remotely for over 12 years — that's a life choice, the best part of it has been to experience and be present while my daughter has grown
My father is 78, and was just granted FIDE Master. 🎉
Self-taught as a kid in a small town, he achieved International Master in postal chess in the '70s. Drew with World Champion Karpov in a simultaneous exhibition.
He quit in his '40s, but retook playing when he retired. 💪
I kind of feel that in the last couple of years or so there are new names emerging in the Rails community, contributing great stuff in different spaces, building, being positive and constructive. ❤️
"Projects tend to span to fill the amount of time allotted to them => Shorter deadlines".
I say bullshit, I have worked without allotted times, budgets, estimations, etc. for 12 years. Always shipping.
You don't need shorter deadlines, what you need is an execution mindset.
I had the honor of opening RailsConf this year.
The keynote covers the story of Zeitwerk: The seed idea, the difficulties and wins, the people that helped along the way, and the aftermath. Also, an interlude about the name.
🙇♂️
One-liner to run Rubocop only on the files created or modified in the current branch:
git diff --name-only --diff-filter=d main... | \
xargs bundle exec rubocop "$@"
Rosa is really incredible.
As just one anecdote, she did AoC 2019 (the one with Intcode) using one different programming language per day, while moving to a new apartment.
Anything Rosa does is going to be world-class.
Huge kudos to the incredible
@rosapolis
for finishing this in time for the end of the year. Not only did she create a fantastic new open source gift for everyone in the Rails community, she diligently, and with nary a hiccup, moved over a big production system by herself 👏👏
Years ago we had a Toyota Yaris, which is a super nice utility car I'd buy again.
After having it serviced, I followed the mechanic to his office for the paperwork, and noticed some diplomas on the wall. Curious, I asked about them. "Oh, I do auto repair competitions". What?
He
Looking at the CHANGELOG, I just realized Zeitwerk is already 5 years old, first stable release was Feb 2019.
My goodness, time does fly. It's been intense and very gratifying years.
In these 15 years doing consultancy I have worked without deadlines (and without estimations). I believe dateless workflows are optimal for most software projects.
I recently talked about this topic in Balkan Ruby.
My father, 79 years old, is playing in an international chess tournament and yesterday he won against a Russian Grandmaster.
You don't mess around with my father on the chessboard! 😎
(He lost today.)
It is with great pleasure that I removed the monkey-patch for Marshal.load in Active Support, which was necessary to autoload from dumps.
With Zeitwerk, Marshal.load autoloads out of the box.
Yet another little victory 💪🏆.
I'll explain how Rails applications boot next week at
#RailsWorld
.
Understanding this process was eye-opening for me in the early days. Here's a photo of yours truly giving that talk in 2007, in Madrid.
As the slide shows, things were VERY different back then.
The way I like to program, Crystal is at the right intersection of performance (!), safety guarantees, and expressiveness for me.
Crystal is a jewel that deserves more attention.
At the supermarket:
Wife: You could already go to the check-out line and wait for us
Me: Not needed, really, there is no line right now
Daughter: Daddy, there is always a line, right now the line has 0 people
And that is how you conquer your father.
I am working on a blog post about a dramatic performance boost I came up with for a client.
It has the interesting characteristic that the busier the application is, the faster the code runs. Like, there's an acceleration as workload increases, paradoxical huh?
Coming soon!
Looking at that talk from 2018 (left) vs a more recent one from Rails World (right), I believe I look younger now.
I have been working on my health and it shows. (The bags below the eyes were removed surgically, it is just fat you accumulate with time).