Recently at the Friendly.rb conference in Romania, I explored an experimental blend of Ruby and LISP, particularly 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 LISP's features. 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"}] [:figcaption "A visual representation of S-expressions."]]]])
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.
As I’m already revving up for next 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, you should know that tickets are already on sale.
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