Originally published after the 2023 Friendly.rb conference in Romania, this is an archival account of that talk.
At the Friendly.rb conference in Romania, I explored an experimental blend of Ruby and the Lisp family, implemented here through Clojure. This journey was more about embracing the spirit of experimentation intrinsic to Ruby, rather than direct comparison.
A big shoutout to Jakob , whose suggestion that I do a lightning talk was a catalyst for my participation. His encouragement led me to share my explorations with fellow Ruby enthusiasts.
One of my personal highlights at the conference was Naijeria Toweett's talk, "React-ing to Rails: Why Ruby on Rails is the Best Stop for Web Developers." Her transition into tech as a mother and a problem solver was not only inspiring but also infused with humor and warmth, bringing a delightful human touch to the technical world. For those curious to experience her engaging storytelling and insightful journey with Ruby on Rails, Naijeria's full presentation is available online .
In my presentation, I delved into Ruby's playful side by contrasting its syntax with features common to Lisp-family languages. A pivotal aspect of my talk was utilizing JRuby to integrate Ruby on Rails with Clojure, demonstrating Ruby's creative possibilities. This integration owes much to Charles Oliver Nutter , the maintainer of JRuby. His work in maintaining this crucial bridge between Ruby and Java ecosystems has been indispensable for the Ruby community. You can watch my talk here .
And here it is: app/views/articles/index.html.clj in all its glory:
(html
[:main
[:section {:id "ruby-lisp-alien-tech"}
[:h2 "Ruby & the LISP Alien Tech"]
[:p "When we talk about the world of programming languages, two stand out in their unique ways: Ruby, "
"with its elegant syntax and Rails powerhouse, and LISP, the ancient language known for its "
"code-as-data philosophy. The connection? Both embody the spirit of making the impossible possible. "
"Join us as we delve into the mysteries of Ruby and LISP and uncover the alien tech within."]
[:img {:src "https://www.lisperati.com/lisplogo_warning2_256.png", :alt "LISP Alien Tech Illustration"}]]
[:section {:id "s-expressions"}
[:h2 "What are S-expressions?"]
[:p "S-expressions, or symbolic expressions, are a fundamental part of the LISP (LISt Processing) "
"programming language. They are used to represent both data and code. An S-expression can be an "
"atom or a list. At its core, an S-expression is a way to represent nested list data in a uniform "
"manner."]
[:figure
[:img {:src "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVUA", :alt "S-expression diagram (illustrative truncated data URI)"}]
[:figcaption "A visual representation of S-expressions."]]]])
The base64 image data above is intentionally truncated for illustration, so that excerpt is not directly runnable.
The focus was on Clojure's Hiccup library to dynamically render HTML in a Rails application. This required creating a custom ActionView::Template handler in Rails to process Clojure's code. More than a technical exercise, this project was about exploring the contrasts between OOP and functional paradigms, particularly in Clojure. It was purely an exploration, having no practical purpose other than demonstrating Ruby's flexibility and encouraging paradigmatic curiosity.
At the time, I was already revving up for the following year’s Friendly.rb conference, it’s not just the anticipation that’s buzzing — it's the reminder of how electrifying the Ruby community truly is. These events are like the ultimate sandbox for grown-up tech enthusiasts: a place to share, learn, experiment, and sometimes, just revel in the camaraderie of like-minded tinkerers.
Bonus: if you're already marking your calendar and planning your tech adventures, tickets were already on sale when this was published.
I extend my kudos to the Friendly.rb team - Adrian , Lucian , Jakob , Alex , and Stefan - for creating a platform where learning and community can thrive.
Resources
- Source code repository: Weird Ruby on GitHub
- Learn about Clojure: Clojure Official Site
- Hiccup library: Hiccup on GitHub
- For Clojure & Leiningen: Leiningen
- About JRuby: JRuby Official Site