Nithin Bekal

@nithinbekal.com

Staff developer at Shopify. I mostly post about Ruby, Rails, Vim/Neovim and assorted programming related topics. Blog: https://nithinbekal.com/ Photography: https://photos.nithinbekal.com/

His laptop died a few weeks into building a new programming language. So he kept going... from his phone. Nithin Bekal on what it's like to give an LLM complete control over how your language evolves, and why it was "scary."

New M5 Pro Macbook arrived this week, about a month after my 2019 Intel Macbook died. This thing is shockingly fast, with native gem installs feeling almost instant compared to the old laptop.

Tried Opus 4.8 for a couple of days, and it seems a decent improvement. I moved to GPT 5.5 when it was released, and didn't even consider Opus 4.7 at the time, but with this release the two frontier models seem a bit closer. #ai

Released Sapphire 0.8.0 with a few big improvements - abstract classes, structural interfaces, match expressions, and Ruby-style modules. Also improved the error messages and changed super syntax to be more similar to how it behaves in #Ruby.

Abstract classes: mark a class abstract to prevent direct instantiation; use abstract def to require subclasses to implement a method:Structural interfaces: declare an interface with required method signatures; any class implementing those methods satisfies the interface, no explicit declaration neededmatch expression: pattern match on literals, ranges, and multiple values per arm; use _ as a wildcard and if guards for conditional arms:
Modules and mixins: define reusable method groups with module and mix them into classes with include.

module Greetable {
def greet -> String {
"hello from " + self.name
}
}
class Person {
include(Greetable)
def name -> String { "Alice" }
}
Person.new. greet
# "hello from Alice"

Decided to start playing with a toy programming language while reading the fantastic Crafting Interpreters book. After 4 weekends of pairing with coding agents, I made a surprising amount of progress on the Sapphire programming language. github.com/sapphire-pro... #programming #plt #rustlang #ruby

GitHub - sapphire-project/sapphire: A small OOP language inspired by Ruby

A small OOP language inspired by Ruby. Contribute to sapphire-project/sapphire development by creating an account on GitHub.

github.com

Frozen String Literals: Past, Present, Future? byroot.github.io/ruby/perform... I still can't believe frozen string literals haven't become the default after all these years, and with a clear deprecation path. Ruby 4.0 is <2 months away, so I don't think it's happening this year either. :( #ruby

Frozen String Literals: Past, Present, Future?

If you are a Rubyist, you’ve likely been writing # frozen_string_literal: true at the top of most of your Ruby source code files, or at the very least, that you’ve seen it in some other projects.

byroot.github.io

rv, a new kind of Ruby management tool andre.arko.net/2025/08/25/r... This is inspired by python's uv, so really excited for this project, having seen how much uv has influenced the python ecosystem in a short while. rv doesn't support Intel macs yet, so I'll have to wait a bit to try it. #ruby

rv, a new kind of Ruby management tool

For the last ten years or so of working on Bundler, I’ve had a wish rattling around: I want a better dependency manager. It doesn’t just manage your gems, it manages your ruby versions, too. It doesn’...

andre.arko.net

One benefit of #Sorbet is that it can make VSCode and Neovim almost on par with RubyMine's excellent behavior of being able to go to definitions and references from almost anywhere to anywhere. It helps so with debugging and refactoring.  This is amazing in a dynamically typed language like #Ruby