Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Rails Designer 

Creating a Simple Embeddable JavaScript Widget (for Your Rails App)

This article was taken from the book: JavaScript for Rails Developers. It is shortened and adapted for the web.


Browsing any modern SaaS site or app and you have very likely seen a widget in the bottom corner. Like a chat or a documentation look-up dialog.

In this article, I want to show you an example on how you can build such JavaScript widget that users can embed on their own site or app. It can be a great starting point for a new SaaS business (feel free to send stock options my way šŸ¤‘).

If you purchase the professional package of the JavaScript for Rails Developers book, check out the bundled resources. It includes the resource for a complete JavaScript widget, along with a Rails…

Nithin Bekal 

Exporting fly.io postgres database

Recently, I’ve been using fly.io for small hobby projects like devlibrary. However, I’ve wanted to simplify the setup even further by replacing the app’s postgres DB with sqlite. To start, I needed to figure out how to export the database to my local machine.

First, start a fly proxy so you can connect to the remote database. This will create a proxy running in localhost:5434 for a postgres app with the name devlibrary-db.

fly proxy 5434:5432 -a devlibrary-db

The database dump needs a password, which can be extracted from the DATABASE_URL env variable. This can be fetched from:

fly ssh console -C "printenv" | grep DATABASE_URL

Then, in another terminal window run the pg_dump command,…

Ruby Central 

Ruby Central's OSS Changelog: June 2025

Ruby Central's OSS Changelog: June 2025

Hello, and welcome to the June newsletter. Read on for announcements about our Open Source Program and a report of the OSS work we’ve done over the past month!

As mentioned in our previous newsletters, we will now be sending out separate updates for the Open Source Program and general Ruby Central organization and community news.

You can expect our general Ruby Central newsletter (the Ruby Central README) in your inbox later this month.

Open Source Program Announcements

Marty keynotes at Baltic Ruby

Ruby Central's OSS Changelog: June 2025

We’re excited to share that our Director of Open Source, Marty Haught, spoke at Baltic Ruby, June 12-14! Marty joined a fantastic keynote lineup alongside Matz and Hanami’s Tim Riley.

In his talk,…

RichStone Input Output 

The new AI wave, Rails Builders III and Mom Test reading group

The new AI wave, Rails Builders III and Mom Test reading group

Hey all!

Here are some mixed-bag updates with useful resources to help us reach the next level, as well as Rails Builders invites for building together.

Agentic Coding

I've been among the lucky ones in our development team to have gotten sponsored for a Claude Code Max plan by ClickFunnels. Huge thanks at this point, else I would have still been in the dark about where we are in the AI coding revolution.

For giant codebases, it's unlike anything I've tried to create, first ideas around solving a particular problem or finishing features according to specific instructions.

For greenfield projects, it's pretty spot on when generating new code and iterating on it.

It's also unmatched in parsing a…

Ruby on Rails: Compress the complexity of modern web apps 

Introducing On Rails: A New Podcast šŸŽ™ļø from the Rails Foundation

There’s no shortage of podcasts about new tools, trending libraries, and web development hot takes. But what’s often missing are the deeper conversations, the ones about how teams actually made things work in production, under pressure, and with real-world constraints.

That’s the gap we’re hoping to close with šŸŽ™ļø On Rails.

Produced by The Rails Foundation, On Rails is a new podcast focused on the technical decisions, architectural trade-offs, and long-term thinking behind building and maintaining Ruby on Rails applications.

This podcast isn’t about chasing the latest trends. It’s about understanding the choices that help teams ship and sustain reliable software over time. You’ll hear…

AndrĆ© Arko 

jj config edit

Today I stumbled across a jj cheat sheet and it contained an absolute gem of a command that I had somehow completely avoided knowing about this entire time: jj config edit --user. You can just run a jj command to open the config file in your editor! You don’t have to remember whether you put it in ~/.jjconfig.toml, or ~/.config/jj/config.toml, or whatever, you can just edit it! Super great.

Gusto Engineering - Medium 

Platform Engineering at Gusto: Part 2

Accelerating customer value through verticalĀ slicing

A child puts together legosSometimes there is greater value in building something piece byĀ piece

In my last blog, Platform Engineering at Gusto: Part 1, I explored how the Comms Platform team iteratively enhanced the experiences of both customers and product engineers by improving the performance of notifications for larger product teams, improving notification consistency across multiple platforms, and by reducing the load for comms management for productĀ teams.

Just as Rome was not built in a day, the team needed to make changes to our development practices to optimize for end-user facing value as we were confronted with ambiguity of these projects.

A process for…

Evil Martians 

The Hotwire-Rails summit, or interactive multi-step forms at peak UX

Authors: Vladimir Dementyev, Principal Backend Engineer, and Travis Turner, Tech EditorTopics: Rails, Hotwire, Ruby, JavaScript

Read about the techniques and tools we used to build a slick-looking interactive multi-step form with Rails and Hotwire for one of our clients.

Picture this: one day your product, which was built with Ruby on Rails in a canonical HTML-first (Hotwire) fashion, gets an "off-world" feature request, namely, building a highly-customizable and amazingly-interactive user interface. You stare at Figma mockups scratching your head and mulling an unspeakable question: "Is the Renaissance at an end? Should we reach for React now?" Before you abandon ship, let me share the tips…

The Rails Tech Debt Blog 

The Hidden Costs of Technical Debt in Rails: Lessons from Client Projects

When people hear the phrase ā€œtechnical debtā€, they often picture broken code, outdated infrastructure, or a total rewrite waiting to happen. But in our experience at Planet Argon, technical debt usually shows up more quietly.

It’s not a crisis. It’s a pattern.

It shows up in how long it takes to make changes, how often bugs sneak in, and how hesitant developers are to touch certain parts of the codebase. And while it rarely announces itself, it always costs something — whether in time, budget, or momentum.

In this post, we’ll highlight real-world examples of how technical debt has surfaced in Rails applications we’ve worked on. These aren’t horror stories — they’re common issues we see…

Weelkly Article – Ruby Stack News 

🧠 SOLID vs OOP in Ruby: Are We Just Repackaging the Same Ideas?

SOLID vs OOP in Ruby: Are We Just Repackaging the Same Ideas? June 24, 2025 In a recent round of technical interviews, I was asked about the SOLID principles. Like many Ruby developers, I’ve spent years applying object-oriented concepts in practice — even before SOLID was something people talked about regularly. As I dug deeper … Continue reading 🧠 SOLID vs OOP in Ruby: Are We Just Repackaging the SameĀ Ideas? →

The Bike Shed 

466: All about keynotes with Aji Slater

As the final RailsConf draws near Joƫl and Aji Slater sit down to discuss its varied and interesting history of keynote presentations.

The pair reminisce on their previous trips and talks at RailsConf, share some tips on creating the perfect keynote, as well as discussing the strong community that’s rallied behind RailsConf for so many years and how to best connect with others at similar cons as an audience member.

—

Don’t miss out on the final RailsConf which takes place July 8th - July 10th in Philadelphia, PA! Get ready for by checking out Aji’s recommenced keynotes from previous years 2022 - 2017

Thanks to our sponsors for this episode Judoscale - Autoscale the Right Way…

justin․searls․co - Digest 

šŸ“ Tabelogged: 恕悏悄恋 ę–°é™å²”ć‚»ćƒŽćƒåŗ—

I visited 恕悏悄恋 ę–°é™å²”ć‚»ćƒŽćƒåŗ— on May 24, 2025. I gave it a 3.4 on Tabelog.

Short Ruby Newsletter 

Short Ruby Newsletter - edition 141

The one where Marco Roth announced the Herb Language Server and where we discuss again about service objects
justin․searls․co - Digest 

šŸ“ Tabelogged: å¤šåÆčƒ½

I visited å¤šåÆčƒ½ on May 24, 2025. I gave it a 4.0 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: 鳄藤

I visited 鳄藤 on May 24, 2025. I gave it a 3.8 on Tabelog.

Planet Argon Blog 

Planet Argon Named One of Inc. Magazine’s Best Workplaces—for the Third Year Running!

Planet Argon Named One of Inc. Magazine’s Best Workplaces—for the Third Year Running!

We’re celebrating three years running as one of Inc. Magazine’s Best Workplaces! Our team’s dedication and our client-first approach continue to shape our culture.

Continue Reading

Petr Hlavicka 

Versioning API requests

Learn how to handle API request versioning in Rails without duplicating controllers, using a schema-based approach that supports OpenAPI documentation and seamlessly maps external API structures to internal models.
katafrakt’s garden 

Putting Hanami in the browser via WASM

The other day I was loosely listening to a Code and the Coding Coders who Code it podcast episode with Vladimir Dementyev. He was talking about his work around putting Ruby on Rails into the browser to lower the entry barrier for folks who just want to ā€œfeelā€ it, but witohut going through the struggle of choosing a correct Ruby version manager, installing dependencies for gems with C extensions etc.

And I thought: Wow, great!

And I also thought: If it’s (almost) possible with Rails, it should be even more possible with a truly modular framework, such as Hanami.

Despite not knowing a thing about WASM, I decided to give it a go. I had my first working version running in about half an hour.…

Evil Martians 

How to make an AI clone of your CEO for the world's biggest hackathon

Authors: Nina Torgunakova, Frontend Engineer, Ivan Eltsov, Frontend Engineer, and Travis Turner, Tech EditorTopics: Developer Products, Design, Case Study, AI, Design Engineering, AI Integration

Evil Martians and Bolt.new teamed up to build an AI clone of their CEO Eric Simons using Tavus to power real-time video calls for the world’s largest hackathon.

We’re increasingly seeing people connect with AI the same way they’d talk to a real person: face-to-face, voice-to-voice, with natural expressions and gestures. AI talks, listens, looks alive, helps users, and even inspires them. In this post, we’ll share how we helped our client Bolt.new ship an AI clone of its creator, Eric Simons, to the…

Judoscale Dev Blog 

Choosing the Best Python Web Framework

Stuck choosing between Django, Flask, and FastAPI? You’re in the right place. It’s no secret that Python has several great options for making web apps. Some folks have a framework they prefer over others, but you may be wondering how to choose between them!

In the next few minutes you’ll see how they compare in terms of performance, developer experience, and long-term scalability, so you can pick with confidence.

Start with the flowchart below for a quick answer, then read on for the deeper guide:

Which Python framework is for me? A flowchart

Performance and scalability

Your choice of Python web framework has performance implications for your app at scale. When comparing the common framework options for Python,…

Avo Blog 

Adding llms.txt to a Rails application

Let's learn how to add a llms.txt file to a Rails application to help large language models better process our content
justin․searls․co - Digest 

šŸ“ Tabelogged: 焔庵

I visited 焔庵 on May 23, 2025. I gave it a 4.0 on Tabelog.

Hotwire Weekly 

Week 25 - Herb Language Server, VS Code Extension, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another issue of Hotwire Weekly! Happy reading! šŸš€āœØ


šŸ“šĀ Articles, Tutorials, and Videos

Introducing Herb Language Server and Visual Studio Code Extension - Marco Roth has launched the Herb Language Server and VS Code extension, powered by the Herb parser, providing real‑time diagnostics, error reporting, and structural awareness for HTML+ERB files directly inside your editor.

Dead Code: Herbicide - Marco Roth joins Jared Norman on the Dead Code podcast to talk in depth about Herb (see above), why existing tools fall short, and how Herb opens the door for better developer experience and future view-layer innovations.

Master Rails 8 Turbo +…

justin․searls․co - Digest 

šŸ“ Tabelogged: ć‚ć—ć®ć‚æćƒ

I visited ć‚ć—ć®ć‚æćƒ on May 22, 2025. I gave it a 3.3 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: ć†ćŖćŽć‚„ ć›ćć®

I visited ć†ćŖćŽć‚„ ć›ćć® on May 22, 2025. I gave it a 3.9 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: å…Øå›½ć”å½“åœ°ć‚°ćƒ«ćƒ”ć‚³ćƒ¼ćƒˆ 大宮横丁

I visited å…Øå›½ć”å½“åœ°ć‚°ćƒ«ćƒ”ć‚³ćƒ¼ćƒˆ 大宮横丁 on May 22, 2025. I gave it a 3.0 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: いいみや ęœ¬åŗ—

I visited いいみや ęœ¬åŗ— on May 22, 2025. I gave it a 3.4 on Tabelog.

justin․searls․co - Digest 

šŸ“ø Home Sweet Home

What my Japanese friends imagined when I told them I was headed back to Florida

zverok's space 

Notes on code, text, and war. Week 2: If code is text, then what?

Last time, I’ve highlighted ā€œtreating code as textā€ idea as something that I want dedicate a few posts to. Let’s talk in generalities some more this time.

OK, if we look at code as a text, then what?

If this metaphor-based approach – bringing the mental model of one domain into another – is useful, it should have some consequences. What are we gaining by using the culture’s experience with natural language texts in software development?

For now, I want to briefly outline some consequences and then expand on them, hopefully, in future posts.

The code is frequently compared to a cultural artifact, and most of the time, as a juxtaposition. Sometimes, this juxtaposition seeks…

code.dblock.org | tech blog 

Using Claude-Swarm to Upgrade Ruby Projects

One of my colleagues wrote a pretty awesome tool called claude-swarm that orchestrates multiple Claude Code instances as a collaborative AI development team. At Shopify, we are attempting to use it to generate Ruby unit tests at some scale with an army of AI test agents (think a ā€œRuby Expertā€ paired with a ā€œTDD Practitionerā€ and a ā€œCode Review Nitpickerā€). But for the purposes of this post, let’s just upgrade Ruby in a few projects.

First, ensure that you have a working version of command-line Claude code with a monthly subscription, since you will be having a lot of tokens for breakfast.

$ claude "Say hello."
╭───────────────────────────────────────────────────╮
│ ✻ Welcome to Claude…
justin․searls․co - Digest 

šŸ“„ The T-Shirts I Buy

I get asked from time to time about the t-shirts I wear every day, so I figured it might save time to document it here.

The correct answer to the question is, "whatever the cheapest blank tri-blend crew-neck is." The blend in question refers to a mix of fabrics: cotton, polyester, and rayon. The brand you buy doesn't really matter, since they're all going to be pretty much the same: cheap, lightweight, quick-drying, don't retain odors, and feel surprisingly good on the skin for the price. This type of shirt was popularized by the American Apparel Track Shirt, but that company went to shit at some point and I haven't bothered with any of its post-post-bankruptcy wares.

I maintain a roster of…

justin․searls․co - Digest 

šŸ“ Tabelogged: ē†Ÿęˆå’Œē‰›ć‚¹ćƒ†ćƒ¼ć‚­ć‚°ćƒŖćƒ«ćƒ‰ ć‚Øć‚¤ć‚øćƒ³ć‚°ćƒ»ćƒ“ćƒ¼ćƒ• ęØŖęµœåŗ—

I visited ē†Ÿęˆå’Œē‰›ć‚¹ćƒ†ćƒ¼ć‚­ć‚°ćƒŖćƒ«ćƒ‰ ć‚Øć‚¤ć‚øćƒ³ć‚°ćƒ»ćƒ“ćƒ¼ćƒ• ęØŖęµœåŗ— on May 21, 2025. I gave it a 4.0 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: ä¼Šå¤Ŗåˆ©äŗœć®ć˜ć‡ć‚‰ććØć‚„

I visited ä¼Šå¤Ŗåˆ©äŗœć®ć˜ć‡ć‚‰ććØć‚„ on May 21, 2025. I gave it a 3.1 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: ラーピン ē’°2å®¶ å·å“Žåŗ—

I visited ラーピン ē’°2å®¶ å·å“Žåŗ— on May 21, 2025. I gave it a 4.0 on Tabelog.

Fractaled Mind 

CSS-only Star Rating Component with Half Steps

After some experimentation, research, and AI being stupid, I finally have a simple, clean implementation of a star rating component that uses only radio inputs and labels and allows for half steps. 50 lines of beautiful CSS. Let’s break it down piece by piece.


Before I dove into the code, I did some research on how others had tackled this problem with pure CSS. I found two implementations that I liked. Both used simple radio inputs and labels, which is essential to the solution I want. But, both had some limitations that I didn’t like. One didn’t support half steps, while the other relied on the FontAwesome font. I want to use simple background image SVGs and radio inputs. So, after…

Hanami 

Field report from Riga and the Rooftop

It’s week 3 of our sponsorship drive! This week is a special one, because I’ve been out in the commuity, and I have a field report to share!

Tim on Rooftop Ruby

Earlier this month I had the pleasure of sitting down for a proper chat (not just a cameo) with my friends Collin and Joel on Rooftop Ruby. It was a wide-ranging affair, featuring not just the usual serving of English gastronomy, but also the hows and whys behind our sponsorship drive, and where we might take things in the future. It was a good one. Listen now!

Huge thanks to Collin and Joel for making this happen. I had very limited time to squeeze in this recording, and they were extremely…

Remote Ruby 

Unpacking Direct Routes and More

In this episode of Remote Ruby, Chris and Andrew discuss the recent Google Cloud Platform and Heroku outages, sharing personal experiences of system impacts and recovery strategies. The conversation shifts to technical insights, including a deep dive into Rails ā€˜direct’ routes and their routing helper capabilities. They also touch on the latest performance enhancements in Ruby 3.3, such as Embedded TypedData Objects and their impacts. Also, they explore parsing Ruby code with Prism and chat aboutĀ  productivity hacks, upcoming RailsConf plans, parenting chaos, and dreams of launching their own MTV show. Hit the download button now!Ā 

Links

justin․searls․co - Digest 

šŸ“ø Possy's been busy

Earlier this year, I announced I was working on a Rails app called POSSE Party which allows users to syndicate their website's content to a variety of social platforms simply by reading its RSS/Atom feed.

Well, as of today, POSSE Party officially posts to just about everything I could want it to. This week, I locked myself in a tiny Tokyo apartment and didn't let myself out until I'd finished building support for Instagram, Facebook Pages, LinkedIn, and YouTube. That brings the total number of platforms it supports up to 8. I've updated this site's POSSE Pulse accordingly.

I'm excited and relieved to have realized the vision of what I set out to build. I'll be discussing what's next……

AndrĆ© Arko 

a jj prompt for powerlevel10k

I’m in the process of switching from git to jj right now. That switch is another post of its own, which I am still working on, but in the meantime I wanted to write up the way that I’ve set up my shell prompt to include information about the current jj repo. If you’re not already familiar with jj, you might find the ways jj is different from git helpful background reading for the rest of this post.

I use the default macOS shell, zsh, and I don’t put much information into my prompt: basically just the current directory and the current git branch name, colored to show if I’m ahead or behind the remote. Using jj adds some interesting caveats to this kind of prompt, since jj branches aren’t…

justin․searls․co - Digest 

šŸ“ Tabelogged: é­šå±‹ć‚ć‚‰ć¾ć• å·å“Žåŗ—

I visited é­šå±‹ć‚ć‚‰ć¾ć• å·å“Žåŗ— on May 20, 2025. I gave it a 3.4 on Tabelog.

Fractaled Mind 

CSS-only Star Rating Component with Half Steps

After some experimentation, research, and AI being stupid, I finally have a simple, clean implementation of a star rating component that uses only radio inputs and labels and allows for half steps. 50 lines of beautiful CSS. Let’s break it down piece by piece.


Before I dove into the code, I did some research on how others had tackled this problem with pure CSS. I found two implementations that I liked. Both used simple radio inputs and labels, which is essential to the solution I want. But, both had some limitations that I didn’t like. One didn’t support half steps, while the other relied on the FontAwesome font. I want to use simple background image SVGs and radio inputs. So, after…

justin․searls․co - Digest 

šŸ“ Tabelogged: 串かつ ć§ć‚“ćŒćŖ å·å“Žåŗ—

I visited 串かつ ć§ć‚“ćŒćŖ å·å“Žåŗ— on May 20, 2025. I gave it a 3.3 on Tabelog.

AndrĆ© Arko 

Variable outputs from jj to a fixed length zsh array

While working on my shell prompt for jj, which will get a much longer post on its own shortly, I ran into a fascinating mismatch between different programs’ ideas of ā€œemptyā€.

To set the context, I’m trying to print out the change ID and the commit ID, which have two parts each. The ā€œprefixā€, which is the shortest unambiguous value that will match, and the ā€œrestā€, which is the other letters needed to reach the minimum length. (In this case 4 characters).

jj log -T 'separate(" ",
  change_id.shortest(4).prefix(),
  change_id.shortest(4).rest(),
  commit_id.shortest(4).prefix(),
  commit_id.shortest(4).rest()
)'

In jj, the separate() function prints each argument, delimited by a string. So…

Awesome Ruby Newsletter 

šŸ’Ž Issue 474 - Ruby on Rails Audit Complete

Ruby Weekly 

The latest Ruby version usage stats

#​755 — June 19, 2025

Read on the Web

Ruby Weekly

As part of Gift Egwuenu's latest RubyGems monthly update post, some Ruby version and gem download stats from RubyGems.org were shared. Some insights:

  • šŸ“ˆ RubyGems.org served 4.06 billion gems in May 2025, versus 2.87 billion in the same month last year.
  • Ruby 3.2 is the most deployed version for now.
  • The latest Ruby branch – 3.4 – has reached almost 10%
  • About 33% of users are using versions that have reached End-of-LifeĀ (EOL).
  • All Ruby 3.x releases total about 85%, all Ruby 2.x releases about 14%, and, thankfully, only about 0.2% for Ruby 1.9 or earlier.

Tech…

Write Software, Well 

Working Effectively with AI as a Developer

Working Effectively with AI as a Developer

Over the past year, I’ve started heavily using AI tools like Cursor and ChatGPT in my everyday development workflow. They’re not a replacement for thinking, but I found them as excellent assistants for learning, debugging, refactoring, and accelerating implementation work.

In addition, I’ll soon start working with a company to train their developers on using AI tools in everyday development, as part of a Ruby on Rails training program. So I wanted to write down some common patterns I’ve observed in my own workflow, plus the patterns I’ve come across from other experienced developers and the ones I found online.

Btw, this is by no means an exhaustive list; if you know more patterns and best…

Rails Designer 

Auto-pause Video Player with Stimulus

Ever seen videos on popular (social media) platform sites being automatically paused when you scroll them out view (and resume again when in view)? I find this an elegant UX and recently was asked, via my Rails UI Consultancy work, to create such a feature as part of a larger learning platform.

It is fairly straight-forward with JavaScript’s Intersection Observer, but there are still some interesting techniques used.

If you want to check out the full set up, check out this repo.

As often when building something with Stimulus, let’s start with the HTML:

<video
  src="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4"
  controls
  preload="metadata"
  da…

Then create the Stimulus controller: bin/rail…

justin․searls․co - Digest 

šŸ“ Tabelogged: 恆恕恎悄 å·å“Žåŗ—

I visited 恆恕恎悄 å·å“Žåŗ— on May 19, 2025. I gave it a 3.5 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: ę“‹é£Ÿć‚„ 三代目 恟恄悁恄恑悓

I visited ę“‹é£Ÿć‚„ 三代目 恟恄悁恄恑悓 on May 19, 2025. I gave it a 3.3 on Tabelog.

Ruby Magic by AppSignal 

A Deep Dive into Solid Queue for Ruby on Rails

Our previous article in this series established that Solid Queue is an excellent choice if you need a system for processing background jobs. It minimizes external dependencies — no need for Redis! — by storing all jobs in your database. Despite that, it is incredibly performant.

But just being performant is not enough for a production-ready background job system. Rails developers have come to expect a lot over the years. We don't just want to enqueue jobs to run in the background. We want to schedule jobs, run them on a recurring schedule, and we might even want to limit how many jobs can run concurrently. We want more features!

Amazingly, Solid Queue provides all of those features out of…

justin․searls․co - Digest 

šŸ“ø 28 Allergens Not Detected

Sure this ice cream killed me, but think of all the allergens it didn't have!

AndrĆ© Arko 

zsh cheat sheet

Today I was trying to figure out how to parse a string into an array in zsh, and eventually found the zsh cheat sheet. This should definitely be posted somewhere much easier to find, or maybe should just be the beginning of the zsh man page.

RubySec 

CVE-2025-28382 (openc3-cosmos-tool-iframe): OpenC3 COSMOS Vulnerable to Directory Traversal via openc3-api/tables endpoint

An issue in the openc3-api/tables endpoint of OpenC3 COSMOS 6.0.0 allows attackers to execute a directory traversal.
RubySec 

CVE-2025-28384 (openc3-cosmos-tool-iframe): OpenC3 COSMOS Vulnerable to Directory Traversal via /script-api/scripts/ endpoint

An issue in the /script-api/scripts/ endpoint of OpenC3 COSMOS 6.0.0 allows attackers to execute a directory traversal.
Evil Martians 

Weeks → days: a case for expert-led, AI-driven design engineering

Authors: Roman Shamin, Prev. Head of Design, and Travis Turner, Tech EditorTopics: Developer Products, Design, Case Study, AI, Design Engineering, AI Integration

While working on a project highlighting a decade of investments in AI products, I recorded how often I used LLMs. Once done, I reread my notes and was shocked—my tech knowledge, multiplied by AI, helped compress weeks of work into a few days.

I recently had the pleasure of working on an interactive chart that highlights a decade of investments in AI products. As I worked on the project, I kept jotting down how often I relied on LLMs throughout the process. When I finished and reread my notes, I was shocked—my technical knowledge,…

Write Software, Well 

How to Inspect the Sequence of Controller Callbacks in Rails

How to Inspect the Sequence of Controller Callbacks in Rails

While debugging a Rails app, sometimes it's useful to see the full list of callbacks that are set to run before, after, or around a controller action, in the exact sequence they will run. This is especially true in applications with a deep controller inheritance hierarchy or a heavy use of concerns with conditional callbacks.

Here's a small trick you can use to inspect the full list of callbacks for a controller.Ā I just learned this todayĀ while trying to make sense of a confusing callback sequence in a fairly complex controller. As always, please let me know if there's a better or more idiomatic way to do this.Ā 

First, add a new initializer with the following code under the initializers…

#…
Island94.org 

The difference between Rails Plugins, Extensions, Gems, Railties, and Engines

There’s overlapping terminology that describes the act of packaging up some new behavior for Rails. I think of two gems I maintain that are of vastly different scales

  • ļæ¼activerecord-has_some_of_manyļæ¼ which adds two new tiny association methods to Active Record models in 150 lines of code.
  • GoodJob, which is an entire Active Job backend with a mountable Web Dashboard and database models and custom job extensions in 10k lines of code.

I was pondering the different terminology because I recently saw both ends of the spectrum discussed in the community:

  • A developer on Reddit announced a tiny new gem and a commenter wrote well actually, in your Readme you called…
Weelkly Article – Ruby Stack News 

šŸ“˜ Designing RESTful APIs with Ruby on Rails: Conventions and Practical Implementation

June 17, 2025 In modern software engineering, APIs (Application Programming Interfaces) serve as essential components for scalable, modular applications. A well-structured API facilitates communication between systems, enhances developer experience, and supports long-term maintainability. This article explores widely accepted API conventions and illustrates how to implement them in Ruby on Rails, with a particular focus on … Continue reading šŸ“˜ Designing RESTful APIs with Ruby on Rails: Conventions and PracticalĀ Implementation →

justin․searls․co - Digest 

šŸ”— Developers can either be scared of AI or supercharged by it

The vast majority of the discourse around the software industry and AI-based coding tools has fallen into one of these buckets:

  1. Executives want to lay everyone off!
  2. Nobody wants to hire juniors anymore!
  3. Product people are building (shitty) prototype apps without developers at all!

What isn't being covered is how many skilled developers are getting way more shit done, as Tom from GameTorch writes:

If you have software engineering skills right now, you can take any really annoying problem that you know could be automated but is too painful to even start, you can type up a few paragraphs in your favorite human text editor to describe your problem in a well-defined way, and then paste that…

justin․searls․co - Digest 

šŸ“ Tabelogged: ę–°ę½Ÿå¤ē”ŗ č€Œä»Š

I visited ę–°ę½Ÿå¤ē”ŗ č€Œä»Š on May 17, 2025. I gave it a 4.0 on Tabelog.

Short Ruby Newsletter 

Short Ruby Newsletter - edition 140

The one where JRuby 9.4.13.0 gets released, Jose Valim will be at SF Ruby Meetup, Jason Sweet discusses Service Objects, and jemalloc development comes to an end
justin․searls․co - Digest 

šŸ“ Tabelogged: ć‚·ćƒ£ćƒ¢ćƒ‹ćƒ¼ äøŠå¤§å·å‰åŗ—

I visited ć‚·ćƒ£ćƒ¢ćƒ‹ćƒ¼ äøŠå¤§å·å‰åŗ— on May 17, 2025. I gave it a 3.5 on Tabelog.

Stefan’s Blog 

Bugsink - Deploy with Kamal

For my personal projects, I used to use Sentry-hosted, but it usually dropped some events if there were a bad bot. I also don’t want to pay for a couple of errors of my side projects. So I found Bugsink as an alternative. Already using kamal for deploying the Rails apps, so I thought it would be a good idea to use it for Bugsink as well, as the integration with HTTPS/SSL with Kamal-Proxy is straigt forward.

Kamal

bundle init
bundle add kamal
# make sure it's kamal >= 2
bundle
kamal init
touch .env
echo ".env" >> .gitignore
echo ".env" >> .dockerignore
echo config >> .dockerignore
echo ".kamal/secrets" >> .dockerignore
echo .git >> .dockerignore

There are a couple of ways to get secrets…

RubyGems Blog 

May 2025 RubyGems Updates

Welcome to the RubyGems monthly update! As part of our efforts at Ruby Central, we publish a recap of the work that we’ve done the previous month. Read on to find out what updates were made to RubyGems and RubyGems.org in May.

RubyGems News

In May, we released RubyGems 3.6.9 and Bundler 2.6.9. These releases bring a series of enhancements and bug fixes designed to improve the overall developer experience with RubyGems.

Notable improvements include fixing the doctor command’s parsing of otool output, adding SSL troubleshooting to bundle doctor, printing WebAuthn authentication links on a separate line for easier access, adding an mtime argument to Gem::Package::TarWriter#add_file, and rem…

We also made substantial progress on the upcoming Bundler 4 release. We’re planning to introduce an environment variable or CLI flag that lets users opt in to upcoming functionality and…

Avo Blog 

Passwordless authentication with the NoPassword gem

Let's implement passwordless authentication with the NoPassword gem using the email and OAuth flows.
Julik Tarkhanov 

GETting Conditionally - The Bare Basics

A while ago, a prominent Vercel employee (two, actually) posted to the tune of:

Developers don’t get CDNs

Exhibit A etc.

It is often that random tweets somehow get me into a frenzy – somebody is wrong on the internet, yet again. But when I gave this a second thought, I figured that… this statement has more merit than I would have wanted it to have.

It has merit because we do not know the very basics of cache control that are necessary (and there are not that many)!

It does not have merit in the sense that force-prefetching all of your includes through Vercel’s magic RSC-combine will not, actually, solve all your problems. They are talking in solutions that they sell, and what they…

Greg Molnar 

Exploiting LLM chatbots

It is becoming more and more common to use LLM chatbots for customer support and it is pretty easy to introduce security issues while implementing them. Here is a little story about such thing.

justin․searls․co - Digest 

šŸ”— What Google Zero means for web publishers

This week's Vergecast did a great job summarizing the current state of affairs for web publishers grappling with the more-rapidly-than-they'd-hoped impending arrival of "Google Zero." Don't know what Google Zero is? Basically, it describes a seemingly-inevitable future where the number of times Google Search links out to domains not owned by Google asymptotically approaches zero. This is bad news for publishers, who depend on Google for a huge proportion of their traffic (and they depend on that traffic for making money off display ads).

The whole segment is a good primer on where things stand:

My recollection is that everyone could see the writing on the wall as early as the…

justin․searls․co - Digest 

šŸ“ Tabelogged: čÆéŸ³

I visited čÆéŸ³ on May 16, 2025. I gave it a 4.0 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: ć‚‰ćƒ¼ć‚ć‚“ 一空

I visited ć‚‰ćƒ¼ć‚ć‚“ 一空 on May 16, 2025. I gave it a 3.5 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: ćƒ‹ć‚¤ć‚¬ć‚æ ćƒ”ćƒƒćƒ„ć‚§ćƒŖć‚¢ ćƒ™ćƒ³ćƒˆć‚Øćƒžćƒ¼ćƒ¬

I visited ćƒ‹ć‚¤ć‚¬ć‚æ ćƒ”ćƒƒćƒ„ć‚§ćƒŖć‚¢ ćƒ™ćƒ³ćƒˆć‚Øćƒžćƒ¼ćƒ¬ on May 16, 2025. I gave it a 4.0 on Tabelog.

Hotwire Weekly 

Week 24 - Stimulus client-side validations, Turbo SwiftUI? and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another issue of Hotwire Weekly! Happy reading! šŸš€āœØ


šŸ“šĀ Articles, Tutorials, and Videos

Better Client-side Validations Using Stimulus - NicolƔs GaldƔmez shows how to enhance native HTML validations with Stimulus and CSS. By combining :has(input:invalid) and small controllers, you get live, styled error messages with minimal JavaScript.

Hotwire Native LIVE Episode 3: Debugging - Joe Masilotti covers how to debug Hotwire Native apps by enabling debugLoggingEnabled, reading Xcode logs, and tracing visits, errors, and bridge components. Also includes tips for diagnosing path configuration issues.

GitHub Flavored Markdown in Rails with Commonmarker - Exequi…

justin․searls․co - Digest 

šŸ“ Tabelogged: äŗ”éƒŽ 万代店

I visited äŗ”éƒŽ 万代店 on May 16, 2025. I gave it a 3.3 on Tabelog.

Closer to Code 

Karafka 2.5 and Web UI 0.11: Next-Gen Consumer Control and Operational Excellence

Introduction

Imagine pausing a problematic partition, skipping a corrupted message, and resuming processing - all within 60 seconds, without deployments or restarts. This is now a reality with Karafka 2.5 and Web UI 0.11.

This release fundamentally changes how you operate Kafka applications. It introduces live consumer management, which transforms incident response from a deployment-heavy process into direct, real-time control.

I'm excited to share these capabilities with the Karafka community, whose feedback and support have driven these innovations forward.

Sponsorship and Community Support

The progress of the Karafka ecosystem has been significantly powered by a collaborative effort, a…

Alchemists: Articles 

Git Rebase Break

Cover
Git Rebase Break

The break command was added in Git 2.20.0 and is similar in nature to Git Rebase Edit but doesn’t target a specific commit. Instead, break works more like a breakpoint when debugging code. When rebasing, this means Git will halt the rebase wherever you place the break. You’re not limited to a single break either and can add as many as makes sense when rebasing your code.

Let’s explore how this simple command can be quite powerful when rebasing.

Workflow

To start, we’ll create a Git repository for demonstration purposes:

mkdir demo
cd demo
git init

Now we can add a few commits and, to keep this simple, we’ll use empty files to populate the repository. In…

Write Software, Well 

Thoughts on Freelancing for Web Developers

Thoughts on Freelancing for Web Developers

If you’re an experienced web developer looking to go freelance, or just line up a few solid side gigs, there’s a simple shift that can make your life much easier: stop targeting upwork / individuals / mom-and-pop shops, and sell to businesses. Focus on clients who already know how to work with developers and have long-term needs.

The typical local mom and pop coffee shop / gym / yoga studio might sound like a great client: they’re nearby, they need a website, and they’re impressed when you mention your design and development skills. In reality, these clients often lack the budget, project management experience, or long-term need for software that makes them worthwhile.

Your best bet for…

justin․searls․co - Digest 

šŸ“ø Death to roller bags

Nearly all Japan's overtourism woes could be solved overnight if the nation simply outlawed roller bags.

justin․searls․co - Digest 

šŸ“ Tabelogged: 鳄焼処 鳄ぼん ęœ¬åŗ—

I visited 鳄焼処 鳄ぼん ęœ¬åŗ— on June 15, 2025. I gave it a 3.7 on Tabelog.

justin․searls․co - Digest 

šŸ”— Chatbots are enrolling in US colleges to commit financial aid fraud

Well, I suppose this is one way to fix America's dwindling college enrollment problem:

Across America's community colleges and universities, sophisticated criminal networks are using AI to deploy thousands of "synthetic" or "ghost" students—sometimes in the dead of night—to attack colleges. The hordes are cramming themselves into registration portals to enroll and illegally apply for financial aid. The ghost students then occupy seats meant for real students—and have even resorted to handing in homework just to hold out long enough to siphon millions in financial aid before disappearing.

Bonus points if the chatbots are men, at least.

šŸ”— fortune.com

šŸ§‚ justin.searls.co

AndrĆ© Arko 

gem clone

Today I stumbled across a neat tool (written by my Bundler and RubyGems co-maintainer @hsbt) that makes it super easy to get a copy of a gem’s source repo: gem-clone. gem install gem-clone && gem clone GEM. That’s it! Pretty good.

Ruby on Rails: Compress the complexity of modern web apps 

New Rails Foundation Guides PR, fix affected_rows for SQLite adapter and more!

Hi, it’s Vipul. Happy Friday šŸŽƒ!
Let’s explore this week’s changes in the Rails codebase.

New Guides Pull Request for review
A new guides Pull Request is up, which updates the Active Record Encryption Guide. If you are well versed in these areas, please review and submit your feedback on the PR!

We also have 2 other Guides PRs open where you can help out!

Fix affected_rows for SQLite adapter
This update refines the SQLite adapter’s affected_rows logic. It addresses two issues: #changes wasn’t reset for non-mutating queries like SELECT, while #total_changes could overcount due to…

AndrĆ© Arko 

fx.wtf

I’m a longtime user of jq, but its language is… not intuitive to me. I spent a lot of time searching for prewritten jq programs I can use, or reading the docs trying to figure out the exact thing that I want to do. Mostly, I think to myself ā€œwhy do I have to learn a new language to manipulate JSONā€ every time I use it, even if my use is successful and does the thing I want.

Good news, you don’t have to learn a new language to filter JSON anymore, thanks to fx. With a docs site at the excellent domain fx.wtf, and the ability to filter interactively or by providing Javascript as arguments, fx is the program I have always wished that jq was.

justin․searls․co - Digest 

šŸŽ™ļø Merge Commits podcast - Changelog: Saltiness about frostiness

Direct link to podcast audio file

Jerod and I sat down after WWDC to rifle through Apple's various announcements and dish our takes. As usual, we found a lot to like and (IMNSHO) did a better job than other commentators in ignoring the idle chatter on social media that tends to dominate WWDC discourse in favor of the more meaningful changes the keynote heralds.

You can find it on YouTube:

Appearing on: The Changelog
Recorded on: 2025-06-13
Original URL: https://changelog.com/friends/97

Comments? Questions? Suggestion of a podcast I should guest on? podcast@searls.co

justin․searls․co - Digest 

šŸ“ø I'm edge cases all the way down

I feel like everything I try to do is so weird that when it doesn't work, I'm very often the first person to run into the bugs I discover, and I just ran into a pretty good example. Pretty sure Cursor ships with system prompts designed to prevent it from inserting smart quotes into code listings, because that would normally be a bug… but it also means the agent is constitutionally incapable of writing a script that searches for and replaces smart quotes.

It has been confused about why it can't type smart quotes for quite a while now. Neat.

justin․searls․co - Digest 

šŸ”— 20th Anniversary of Steve Jobs' Stanford Commencement Speech

In 2011, the same month Todd and I decided to start Test Double, Steve Jobs had recently died, and we both happened to watch Steve Jobs' incredible 2005 Stanford commencement speech. Among the flurry of remembrances and articles being posted at the time, the video of this speech in particular broke through and became the lodestone for those moved by his passing.

The humble "just three stories" structure, the ephemera described in Isaacson's book, and the folklore about Steve's brooding in the run-up to the speech became almost as powerful as his actual words. The fact that Jobs, the ruthlessly focused product visionary and unflinching pitchman, was himself incredibly nervous about this…

justin․searls․co - Digest 

šŸ“ Tabelogged: 丸万焼鳄 ęœ¬åŗ—

I visited 丸万焼鳄 ęœ¬åŗ— on June 13, 2025. I gave it a 3.8 on Tabelog.

Giant Robots Smashing Into Other Giant Robots 

Meet thoughtbot at Brighton Ruby 2025

Brighton Ruby 2025 is a few days away and the thoughtbot team is looking forward to meet you all in real life, learn from fantastic talks, and enjoy a day of seaside joy. Brighton Ruby is one of our favourite events — a single-track, single-day conference packed with great energy and great people.

This year we will have two thoughtbotters attending:

Rob's picture

Rob is a developer based in Holmes Chapel, Cheshire and most likely you have seen him already in Brighton Ruby or other conferences.

He has a not-so-quiet obsession with best practices and striving for improvement. He likes to hunt down delicious beers and coffee in his spare time. Despite the recent ups and downs, he’s an avid Stoke City…

Hi, we're Arkency 

Batch mapper in RailsEventStore - how initial idea evolved into experimental feature

Batch mapper in RailsEventStore - how initial idea evolved into experimental feature

Some time ago, Bert who uses RES in his project has reached out to us with a performance issue. The data in his event store database are encrypted. RailsEventStore provides an EncryptionMapper to handle encryption/decryption of domain events’ data. However, in this case the simple use of it caused performance issues.

Idea

The EncryptionMapper gets a keys repository as a dependency, and for each event to encrypt/decrypt (or even for each attribute), it might ask the key repository for an encryption key. That was unfortunate because Bert’s system keeps the encryption keys in an external KMS storage - which…

justin․searls․co - Digest 

šŸ”— It's too easy for foreigners to buy property in Japan

If you just read this month's newsletter, you might have gotten the impression whoa, it's really hard as a foreigner to buy property in Japan. And the fact it took me over a month, mostly on-site, to enter into contract to buy a condo in cash should serve as ample evidence of that.

However, multiple seemingly conflicting things can be true at once, and Bloomberg's Gearoid Reidy calls out several great points in a saucy column (archive link) which he wrote after I got myself into this mess:

But increasingly, the spotlight is falling on foreign buyers, particularly wealthy Chinese, seeking a safe place for their capital and drawn by Japan's political stability and social safety net.…

justin․searls․co - Digest 

šŸ“ Tabelogged: しらす丼と海鮮の店 ę¬”éƒŽäøø

I visited しらす丼と海鮮の店 ę¬”éƒŽäøø on May 13, 2025. I gave it a 3.5 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: 焼肉 ć†ć—ćŖć‚Š

I visited 焼肉 ć†ć—ćŖć‚Š on May 13, 2025. I gave it a 3.7 on Tabelog.

justin․searls․co - Digest 

šŸ“ Tabelogged: Cherry Beans P

I visited Cherry Beans P on May 13, 2025. I gave it a 3.8 on Tabelog.

Awesome Ruby Newsletter 

šŸ’Ž Issue 473 - Build a minimal decorator with Ruby in 30 minutes

AndrĆ© Arko 

utilitylimb fortunes

One of the sillier things I do with my computer is print a horse fortune every time I open a new shell, printed by the even sillier CLI tool ponysay. A long time ago, I downloaded a fortune database from horsefortun.es (RIP), a website full of posts by the Twitter (RIP) account @horseebooks (RIP). More recently, I added a fortune file of posts from ā€œweird twitterā€, which added a lot of excellent variety. Most recently, I added one more, of posts by the excellent @utilitylimb. Most famous for ā€œI can control any kind of gem with any kind of snakeā€, she is not only an all-time poster, she has returned to the internet after a decade long hiatus and can be found at @utilitylimb.bsky.social. Go…

Anyway, please enjoy these Homebrew…

Stanko Krtalic Rusendic 

Clean air & AI

One of my favorite activities is hiking. I'm fortunate to live close to a mountain where I can go for a hike any time I want - often early in the morning, before work. A winding road on the way to Medvednica I love the trek over hills and valleys, through forests and streams, the creaking of trees in the wind, the rustling of leaves, the murmur of streams, and the discussions with friends along the way.

I love the destination - the view, the tranquility, the bean stew with sausage at a hiking lodge, cuddling up to a fireplace in the winter.

But most of all I love the mountain air. Zagreb, as seen from Sljeme, covered with clouds It smells…
Ruby Weekly 

Debugging and parsing Ruby

#​754 — June 12, 2025

Read on the Web

šŸ’” I saw an interesting Ruby bug/problem on Reddit earlier today and have written up a useful tip at the end of this issue, in case you need to debug a similar issue. Make sure to scroll down to the end and check it outĀ :-)
__
Your editor, Peter Cooper

Ruby Weekly

Inside Ruby Debuggers: TracePoint, Instruction Sequence, and CRuby API — Debugging is a fundamental development process, and Ruby’s TracePoint and Instruction Sequence (iseq) APIs make runtime-event and bytecode instrumentation trivial. If you need more power, the CRuby C-API unlocks more, if you’re ready to shoulder…

Dmitry Pogrebnoy (RubyMine)

Memetria K/V:…

naildrivin5.com - David Bryant Copeland's Website 

Neovim and LSP Servers Working with Docker-based Development

Working on an update to my Docker-based Dev Environment Book, I realized it would be important to show how to get an LSP server worker inside Docker. And I have! And it’s not that easy, but wasn’t that hard, either. It hits a lot of my limits of Neovim knowledge, but hopefully fellow Vim users will find this helpful.

The Problem

Microsoft created the Language Server Protocol (LSP), and so it’s baked into VSCode pretty well. If you require a more sophisticated and powerful editing experience, however, you are using Vim and it turns out, Neovim (a Vim fork) can interact with an LSP via the lsp-config plugin.

Getting this all to work requires solving several problems:

  1. Why do this…
Rails Designer 

Introducing Turbo Transition: create smoother Turbo Streams

Ever wondered how to add more joy to components and partials injected or removed from the DOM? Something like this:

Previously I used a solution that relied on event callbacks from turbo. It did its job, but I was never really happy with the solution nor with its usage.

So I am introducing: Turbo Transition: A ā€œminionā€ for Turbo-Frames and Streams that transitions elements as they enter or leave the DOM. ✨ A way simpler, but equally powerful solution than what I had before.

Since I’ve been working actively on Rails Designers I have been exploring all kinds of interesting techniques. Turbo Transition, just like turbo-frame and turbo-stream is nothing more than a custom element that adds…

Check it out for…

RĆ©mi Mercier 

Build a minimal decorator with Ruby in 30 minutes

A few weeks ago, I needed to add some view-related methods to an object. Decorators are my go-to pattern to handle this kind of logic.

Normally, I’d use the draper gem to build decorators. But the app I’m working on used an older and incompatible version of Rails.

So I built a minimal decorator from scratch, added a bunch of extra behaviors, only to end up abstracting all of these away. Follow along!

What I’m working with

My Teacher class has a handful of methods:

  • A one-to-many relationship with the Student class.
  • Two public methods: one that exposes the maximum number of students a teacher can teach to, and one exposing the available teaching places.
  class Teacher < Applicatio…
AndrĆ© Arko 

VirtualBuddy

Apple released developer beta versions of all their OSes this week, and in the past I’ve sometimes upgraded my laptop to the developer betas while reserving my desktop/server to run the final releases. The problem with that plan is if there’s a bad bug in the beta, your laptop doesn’t work anymore. 🄲

I ran across a very cool solution for this problem in a post on bluesky (sorry I can’t find it anymore, whoever posted the link!). VirtualBuddy is a GUI app that wraps the macOS built-in Virtualization.framework to make it super easy to run macOS VMs on top of macOS. If you have a developer account, it’s literally only three clicks to get a macOS beta VM up and running, which is extremely cool.

zverok's space 

Notes on code, text, and war. Week 1: Believing in text

Writing texts is the most useful and fruitful metaphor for software development.

After 25+ years of writing software and at least as much of writing texts, this is the one thing that I have become sure about.

This also means that reading, writing, editing, and layouting concrete chunks of code is a central activity of software development. Not planning, not scheming, not calculating and measuring. All of those take their place—like in writing complex texts, they do—but the most direct and useful experience we can have is still that of getting our hands on the code.

Does this point of view stand in the age of LLMs? I believe that not only it does, but becomes stronger and more…

Hanami 

Hear from our founding patrons

Last week we launched our sponsorship drive, and today we’re back with some updates!

New community patrons!

Since our launch, we’ve had a slew of community patrons support us through our GitHub Sponsors!

Thank you to @karloscarweber, @bjeanes, @josephinehall, @tombruijn, @theomelo, @caius and @andrew! ā¤ļø

A special extra thank you to @gdonald, a sponsor since the beginning of this year, and @BridgeCare, supporting us since July 2023!

Thank you also to @kigster and @Z2Flow for making one-time donations.

I think all of this is enough to warrant an update to our fundraising bar:

🟩 🟩 🟩 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
$27.5k of $70k — 39% to our goal!

In this group, we see…

Avo Blog 

GitHub Flavored Markdown in Rails with Commonmarker

Learn how to render GitHub-flavored Markdown in Rails with Commonmarker, explore syntax highlighting, add shortcodes, and customize output with AST or Nokogiri.
Weelkly Article – Ruby Stack News 

Understanding config/database.yml in Ruby on Rails

Understanding config/database.yml in Ruby on Rails June 11, 2025 The config/database.yml file is a core part of any Ruby on Rails application. It defines how Rails connects to the database in various environments (development, test, production), and it's often the first touchpoint when configuring an application's data layer. Let's explore how this configuration file works, … Continue reading Understanding config/database.yml in Ruby onĀ Rails →

justin․searls․co - Digest 

šŸ“„ These 4 Code Snippets won WWDC

WWDC 2025 delivered on the one thing I was hoping to see from WWDC 2024: free, unlimited invocation of Apple's on-device language models by developers. It may have arrived later than I would have liked, but all it took was the first few code examples from the Platforms State of the Union presentation to convince me that the wait was worth it.

Assuming you're too busy to be bothered to watch the keynote, much less the SOTU undercard presentation, here are the four bits of Swift that have me excited to break ground on a new LLM-powered iOS app:

  1. @Generable and @Guide annotations
  2. #Playground macro
  3. LanguageModelSession's async streamResponse function
  4. Tool interface

The @Generable and…

justin․searls․co - Digest 

šŸ“ Tabelogged: 12

I visited 12 on May 11, 2025. I gave it a 3.7 on Tabelog.

Planet Argon Blog 

Smart Cuts: How to Audit and Reduce Your Team’s Tool Overload

Smart Cuts: How to Audit and Reduce Your Team’s Tool Overload

Learn how to audit your team’s tools and subscriptions, avoid hidden overlap, and streamline your stack—without breaking workflows.

Continue Reading

AndrĆ© Arko 

fzf with the newest files

Today I ran hugo new to create a file, and then wanted to edit it. I have fzf set up to let me open files in Vim, but suddenly realized… why doesn’t the file I just created show up as the first option in fzf? Apparently the answer is that it’s really annoying to get a recursive list of files and then sort them by creation date, to the point where [a Reddit post asking my exact question] had no answers.

It took a while to dig around in various different tools’ docs and repos, but I eventually landed on using rg to list files. This does exactly what I wanted, and I’m really happy with it:

FZF_DEFAULT_COMMAND='rg --files --sortr created' fzf --tmux --print0 | xargs -0 -o $EDITOR

Here’s a…

Julia Evans 

Using `make` to compile C programs (for non-C-programmers)

I have never been a C programmer but every so often I need to compile a C/C++ program from source. This has been kind of a struggle for me: for a long time, my approach was basically ā€œinstall the dependencies, run make, if it doesn’t work, either try to find a binary someone has compiled or give upā€.

ā€œHope someone else has compiled itā€ worked pretty well when I was running Linux but since I’ve been using a Mac for the last couple of years I’ve been running into more situations where I have to actually compile programs myself.

So let’s talk about what you might have to do to compile a C program! I’ll use a couple of examples of specific C programs I’ve compiled and talk about a few things…

JRuby.org News 

JRuby 9.4.13.0 Released

The JRuby community is pleased to announce the release of JRuby 9.4.13.0.

JRuby 9.4.13.x targets Ruby 3.1 compatibility.

Thank you to our contributors this release, you help keep JRuby moving forward!

Stability

  • Fixed a slow memory leak in subclass management. (#8842, #8844)
  • Fixed a potential deadlock during multi-threaded boot and concurrent JIT compilation. (#8845, #8849)

Usability

  • Backported JRuby .sh launcher features from JRuby 10, including AppCDS flags for improved startup time. (#8565, #8625, #8626, #8652, #8653, #8656, #8754)

56 Issues and PRs resolved for 9.4.13.0