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 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 4:00:59 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

51 sources
Now that I re-read what I wrote, it sounds like I am giving a wholesale green flag to Rails. Not so, I also dislike modifying or even extending core classes. It's something I don't like to do at all even on solo work, and the Birthday Paradox you mention has already bitten a friend of mine: http://github.com/raganwald/homoiconic/blob/master/2009-04-0... So while I was ranting a bit about the process vs. tools issue, I fundamentally agree with your concerns that programming Ruby in the style of Rails has issues.
In Thank you, Rails
I freely admit that I have no idea how to measure productivity. And until I do, I really can't tell you that what I choose to do is anything other than consistent with my superstitions about software development. In other words, I choose some superstitions and I can build up a consistent kind of world based on those superstitions and I can test various ideas to see if the ideas are consistent with my superstitions or the logical consequences of those superstitions. But really, I have no idea whether I'm directing development traffic or whether I have a pair of coconuts clamped to my ears and I'm waving palm fronds under an empty sky. http://github.com/raganwald/homoiconic/blob/master/2009-02-1...
In What we actually know about software development, and why we believe it’s true
"Code is strings" in exactly the same sense that "Speech is vibration of molecules." The problem with eval-ing strings is that it doesn't scale. It's great for building three identical modules "B," "C," and "D," but the moment you want to do something interesting, it breaks down. The complexity of manipulating programs as strings grows far more rapidly than the complexity of things you want to do. For example, String#to_proc adds some syntactic sugar to Ruby like implied parameters so you can write things like: some_array.map(&'+ 1'): http://github.com/raganwald/homoiconic/blob/master/2008-11-2... The implementation is hideous: http://github.com/raganwald/homoiconic/blob/master/2008-11-2... That's because it's trying to manipulate and eval strings that represent program syntax where it should be parsing the strings and manipulating data s
Read the rest
tructures that represent program structure.
In Eval() Isn't Quite Pure Evil

Showing the 15 most recent of 51 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.