Felipe Vogel
@fpsvogel.bsky.social
32 followers 210 following 19 posts
Posts Media Videos Starter Packs
Reposted by Felipe Vogel
bluegrassruby.bsky.social
In yesterday's meeting, we started a book club on Polished Ruby Programming by Jeremy Evans.

We talked about:

- underused data types: Rational, Symbol, Set, Struct, Data
- how SOLID principles never seem to come up in real life, e.g. code reviews
- other topics recapped at bluegrassruby.club/posts
fpsvogel.bsky.social
📣 Calling all Nashville Rubyists 📣

A friend of a friend is restarting the Nashville Ruby User Group, and is looking for interested people: nashrb.com

Reposts appreciated!
Nashville Ruby User Group Signup
nashrb.com
fpsvogel.bsky.social
RorVsWild has great posts on Rails performance optimization: www.rorvswild.com/blog

Also, this article and its sequel should be mandatory reading for junior Rails developers: henry.bearblog.dev/beginners-gu.... It would have saved me quite a bit of confusion a few years ago when I was starting out.
fpsvogel.bsky.social
UnsuckJS is a handy list of JS libraries that make writing JS a better experience (even if by reducing the need for JS).

unsuckjs.com

It's the closest thing to a complete list that I've seen, if you include open PRs.

Today I opened a PR with no less than 17 entries 😄

github.com/adamghill/un...
UnsuckJS
unsuckjs.com
fpsvogel.bsky.social
I haven't, I'll check it out!
fpsvogel.bsky.social
That's a bummer, but it makes sense. I played the original terminal version of Ruby Warrior, and I only briefly tried to browser version after it was made.

I updated my post to link to the terminal version and mention the browser version with a caveat.
fpsvogel.bsky.social
Hmm interesting, I'll give cross-posting another try!
fpsvogel.bsky.social
- CSS Nouveau, my favorite CSS course. Now free! www.spicyweb.dev/css-nouveau/...
- You can get access to the New York public library system (e-books, audiobooks) for $50 even if you're not a NY or even a US resident. www.queenslibrary.org/get-a-card/r...

🧵 3/3
fpsvogel.bsky.social
- New blog post: a gigantic list of coding challenges, including some specific to Ruby/JS/TS. fpsvogel.com/posts/2025/t...
- Derails, a joke fork of Rails based on current events. github.com/derails/dera...
- Algorithmic CSS design. every-layout.dev/blog/algorit...

🧵 2/3
fpsvogel.bsky.social
Reposting from Mastodon on here has always felt awkward to me, like I'm saying the same thing again to largely the same crowd… so, new approach: I'll post a weekly recap here of what I shared on Mastodon.

Onto this week's recap! 🧵 1/3
Reposted by Felipe Vogel
vpon.me
For those who blame macOS Tahoe for bugs.

Let me tell you how apps work in the country I live.

Once, all users of the most popular bank got a push notification saying:
"Bro, why are you bald huh?"

Yes, they just tested something in production.
fpsvogel.bsky.social
The book Metaprogramming Ruby 2 explains something that I couldn't have articulated before.

`module`, `class`, and `def` form "scope gates", across which local variables are out of scope.

But you can "flatten the scope" by dynamically defining a module, class, or method: github.com/khusnetdinov...
fpsvogel.bsky.social
@lucianghinda.com also you make a good point at the end of your article, that predicate methods already do the same thing anyway. I've never understood why variables can't end in `?` in Ruby.
fpsvogel.bsky.social
Avoiding private accessors on its own doesn't solve all the ambiguity, but it helps.

(Another disambiguating tactic I've seen is to use explicit `self` for method calls, but private methods can't be called like that so it ends up looking inconsistent. Maybe I just need to embrace the barewords…)
fpsvogel.bsky.social
One nice thing about ivars for me is that I sometimes come across an identifier in the middle of a long method, and I have to figure out whether it's an instance variable, a call to an attribute reader, or a call to an explicitly defined method.
fpsvogel.bsky.social
> Make a private accessor if it’s meant to be called or overridden by a subclass. Otherwise, use the ivar directly.

> This creates clear intent […]

And if the issue of typos leading to `nil` may not be caught by your tests, there's github.com/yippee-fun/s...

2/2
fpsvogel.bsky.social
Recently there was a discussion about using ivars directly vs. private accessors: www.reddit.com/r/ruby/comme...

I've been using private accessors, but @davetron5000.com's take changed my mind.

🧵 1/2
From the ruby community on Reddit
Explore this post and more from the ruby community
www.reddit.com
fpsvogel.bsky.social
🎄 2015 day 6 of #AdventOfCode in #Ruby:

Amazing. A code golf solution in Ruby is twice as long as a solution that wasn't even intended to be golf, in the K language: www.reddit.com/r/adventofco...

I feel like I'm passing by whole other universes.

#ProgrammingLanuages
--- Day 6 Solutions ---
www.reddit.com
fpsvogel.bsky.social
After solving the puzzle I was enlightened by other people's solutions, and for a method `#includes_non_overlapping_letter_pair_twice?` I replaced five dense lines with one: `string =~ /(..).*\1/`. It's about 17x faster too.

My full improvements, for the curious: github.com/fpsvogel/adv...

#ruby
fpsvogel.bsky.social
🎄 I'm doing past Advent of Code puzzles in Ruby: github.com/fpsvogel/adv...

I'll be posting my TILs. Here's one.

2015 day 5: regex backreferences can replace a lot of manual string iteration. 🧵

#ruby