HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
raganwald-deprecated
homoiconic
Ruby2008–2026
raganwald-deprecated / homoiconic

homoiconic

An experiment in publishing code and words about code on a small scale.

66Distinct people
191Mentions
0Explicit recommenders
1.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

An experiment in publishing code and words about code on a small scale.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year191 dated mentions

Observed mentions: 2008-10-29 14:09:15 UTC to 2026-04-23 22:02:06 UTC.

020402008-01-01 00:00:00 UTC to 2009-01-01 00:00:00 UTC (exclusive): 13 mentions; 11 submissions, 2 comments20082009-01-01 00:00:00 UTC to 2010-01-01 00:00:00 UTC (exclusive): 51 mentions; 31 submissions, 20 comments2010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 30 mentions; 20 submissions, 10 comments2011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 40 mentions; 17 submissions, 23 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 38 mentions; 32 submissions, 6 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 10 mentions; 6 submissions, 4 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20082008-01-01 00:00:00 UTC2009-01-01 00:00:00 UTC13112
20092009-01-01 00:00:00 UTC2010-01-01 00:00:00 UTC513120
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC302010
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC401723
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC38326
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC1064
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC101
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC422
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC110

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
What was Homoiconic? Homoiconic was an experiment in publishing code and words about code on a small scale. When I wrote, I added files to the homoiconic git repository, organized by date. Code was included in the posts and also in the folder with the posts that discussed them, so it was easy to download what you liked. You could (and still can) download the entire site as an archive! Homoiconic was really simple: Snippets of code and words about snippets of code. I avoided words by themselves. And the words existed to amplify and explain the code, rather than the code existing to illustrate the words. This was the opposite of most of the posts we could find on traditional (circa 2004) blogs. what can I read right now? Asking me what to read is like asking the chef what's good on the menu. It's all excellent, of course! That being said, I had a few personal favourites: Optimism Elegance and the Surreals Many people link to my series on combinators: Kestrels, The Thrush, Songs of the Cardinal, Quirky Birds and Meta-Syntactic Programming, Aspect-Oriented Programming in Ruby using Combinator Birds, The Enchaining and Obdurate Kestrels, Finding Joy in Combinators, Refactoring Methods with Recursive Combinators, Practical Recursive Combinators, The Hopelessly Egocentric Blog Post, and Wrapping Combinators. There are also a few things about abstractions, functional programming, meta-programming, metaprogramming again, and brevity. Of course, you can simply read the archives. They're organized by date, so the most recent writing is at the bottom, not the top. is there anything else to read? My current blog is called raganwald. is this code clever? Whoa, Nellie! Easy with the word "clever." Being interested in some of the things that interest smart people is not the same thing as being smart. Especially in my case. So before rushing off to use each and every technique presented here, be mindful of the fact that programming requires judgment, it isn't a perfectly logical process of solving problems using whatever tools, materials, and techniques happen to be within reach. You don't want to provoke responses like this: Why do I have a feeling that the professional code you write would be too "clever" for most developers to understand? --devinus My goal is to be able to say that thinking about the code and ideas presented here is a useful way to learn and grow, whether you use any of this code or not. credit where credit is due I originally set up a blog at homoiconic.com, but I spotted David Baldwin's blog, and I knew right away that a blog that is about the how of code ought to be hosted on Github. (Spot a bug or a spelling mistake? This is a Github repo, fork it and send me a pull request!) I am Reg Braithwaite. You can reach me by email. My first name is reg, and that works fine for sending email to braythwayt.com. I look forward to hearing from you.
Read the full README on GitHub

What Hacker News says

191 sources
> Blocks are just anonymous functions. That's it. Blocks in ruby have non-local return, unlike anonymous functions. compare `[1,2,3].map {|e| return true if e > 1 }` in ruby to `[1,2,3].map(e => {if(e > 1) { return true}})` in javascript. The ruby version will return a single `true` value, while the javascript version will return an array. This post walks through a example that resembles my experience writing bugs when I knew way more ruby than javascript: https://github.com/raganwald-deprecated/homoiconic/blob/mast...
In Ruby on Rails in a week
Congrats raganwald. I <3 Github, and even though I don't know raganwald personally, his comments were always intriguing and thoughtful. I also didn't know he lived in Toronto, for some reason I assumed he lived in San Francisco. I also didn't know about Homoiconic - and now there is a treasure trove of lots of wonderful programming (largely Ruby stuff from what I am seeing) articles that I can go through one by one...little by little. Like this one - https://github.com/raganwald/homoiconic/blob/master/2008-10-... For some reason, I have never used `and` instead of `&&` in Ruby. Perhaps because I have never seen it used, but now that I have seen that I can't help but try it out next time. I am not sure if this is even valid syntax in Ruby 2.0, but I am so glad I stumbled across this. For those that were criticizing the purpose of this post
Read the rest
on HN - this is exactly why it deserves a place here. Raganwald is a valued member of HN, largely because of the stuff he has published over the years (and his contributions to the community) - which are still valuable today. As a relatively young Rubyist (started learning in 2009) all of these things are like gold to me. So thank you llambda for submitting this, thank you HN for upvoting it, and thank you raganwald for not deleting this wonderful content. Edit: Also, I think it's cool when we get a chance to 'big up' (Jamaican speak for: "send positive/congratulatory words to") someone while they are alive and can appreciate it. Don't mean to get all morbid, but with so many 'iconic' tech luminaries dying recently (or it feels like that anyway), we always see an outpouring of love after the fact - when they can't hear it. I think it's cool that even though this isn't anything "major" (like a Nobel Prize or anything like that) it's large (and meaningful) enough, for people to take time out to 'big up' raganwald. So....cheers raganwald. raises imaginary wine glass
In Reginald Braithwaite is a GitHubber
I don't really see the method as being any less functional than the function version (ie, they're both without side effects, the method version just has 'this' as an implicit parameter). Though I guess that's just a difference in perspective. Edit: Having stumbled upon something else you wrote[1](Viz. "WHy the crazy idea of using a splatter instead of a mapping method or function?"), I now understand the reason you're making the distinction. Though (speaking as someone who certainly doesn't have the level of expertise to be making this semantic argument) I really don't think it's the distinction between "functional" and "not functional" so much as... "composability"? [1] https://github.com/raganwald/homoiconic/blob/master/2013/01/...
In Explicit vs. Clever

Showing the 15 most recent of 191 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.