eigenclass

eigenclass.org · Personal blog · on HN since 2007

eigenclass is a blog about Ruby and OCaml programming, covering language changes, performance, and tools such as the Git-based backup system gibak.

What HN saysHN links it mainly for gibak, a Git-based backup tool commenters recommend, and for its OCaml and Ruby technical write-ups.
28HN people shared it
15linked it in comments
22stories submitted
264story points
15 years agolast shared
2007people per year2026

Most-shared posts

  1. 1
    A better backup system based on Git
    4 people · 22 points · first shared 2008 · 4 comments on HN
  2. 2
    Changes in Ruby 1.9
    3 people · 5 points · first shared 2007 · discussion on HN
  3. 3
  4. 4
  5. 5
    Hiki.rb
    2 people · first shared 2009
  6. 6
    Gibak 0.3.0
    2 people · first shared 2010
  7. 7
    Memory footprint of objects in Ruby 1.8. 1.9 and OCaml
    1 people · 25 points · first shared 2009 · 2 comments on HN
  8. 8
    Functional programming and OCaml koans
    1 people · 24 points · first shared 2008 · 3 comments on HN
  9. 9
    The sad state of markdown processors
    1 people · 23 points · first shared 2009 · 14 comments on HN
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
    Finite maps galore: imperative code strikes back
    1 people · 6 points · first shared 2009 · 1 comments on HN
  15. 15

What HN people wrote when they linked it

glenjamin · 2011-02-18
I admit I perhaps haven't looked into this as much as I perhaps should have before making that claim. My understanding is that the rubyspec project (http://rubyspec.org/), is an effort to retrospectively document all the stuff the language does. Compare ruby: http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9, to python: http://docs.python.org/dev/whatsnew/2.7.html I appreciate this isn't a great example, as python 2.7 isn't a different implementation (ruby 1.8 -> 1.9 is though), but this has been my experience of the way things are documented language-wise.
surki · 2010-07-07
I assume you are using git to manage your home directory. I use gibak[1] for the same(built on top of git). Out of curiosity, what is your setup like? [1] http://eigenclass.org/hiki/gibak-backup-system-introduction
tyler · 2010-01-08
The part I find particularly silly is where he writes: For example, assume that the hash table implementation shrinks the table if the number of full buckets drops below half, and grows the table if it becomes over full. If the table starts out with 100 buckets, and the number of buckets falls to 49, the size is shrunk to 50. I've never seen a hashtable that actually works this way. It's common knowledge that performance of hashtables degrades long before the "full" point. (I particularly like the explanation of that here: http://eigenclass.org/R2/writings/separate-chaining-vs-double-hashing)
ionfish · 2009-08-27
This is also why things like the double-inclusion problem are still live issues. http://eigenclass.org/hiki/The+double+inclusion+problem One problem that Ruby does need to deal with is when implementation problems become institutionalised as language specifications. http://blog.jcoglan.com/2009/06/06/when-bugs-become-features/
keyist · 2009-08-26
Sites I like from my feeds, aiming for variety: * Joseph Miklojcik (emacs, lisp, languages) http://jfm3-repl.blogspot.com/ * Mauricio Fernández (functional, with ocaml focus) http://eigenclass.org/R2/ * Colin Percival (tarsnap, freebsd security) http://www.daemonology.net/blog/ * Matthew Garrett (mobile linux, power management) http://mjg59.livejournal.com * Brad Fitzpatrick (memcached, pubhubsubbub) http://advogato.org/person/bradfitz/diary.html * Chris Neukirchen's Trivium (all links, great jumping point) http://chneukirchen.org/trivium/
joe_the_user · 2009-02-26
There's a toy prolog interpretter written in Ruby as well (http://eigenclass.org/hiki.rb?tiny+prolog+in+ruby). What I'd really like to see is a Ruby interpretter written in Scheme - or Forth or Erlang or one of those other cool languages...
sfamiliar · 2008-10-28
ruby 1.9.1 is mainly stability fixes to ruby 1.9, which had a few .. quirks. for a less-than-complete guide to ruby 1.9 features, consider reading eigenclass's summary from way back: http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9
kschrader · 2008-05-27
Ruby 2.0 is a not a "start from scratch" project. It's an evolution of the language (which will be done mostly in the experimental 1.9 releases) with a new interpreter. Once 1.9 is stable it will turn into the 2.0 release. The actual effect on Ruby users will be noticeable, but minimal. See http://eigenclass.org/hiki/Changes+in+Ruby+1.9 for some of the changes that are coming up.
aaronbrethorst · 2010-09-28
The very latest possible date real development started on Ruby was Aug 19, 1994. http://cvs.ruby-lang.org/pub/ruby/1.0/ChangeLog-pre-alpha It is likely this code predates that date given that there is no reference to the 0.95 release or anything before that. update: the earliest release I can find is Ruby 0.49 from http://eigenclass.org/hiki/ruby+0.95 (direct link: ftp://ftp.ruby-lang.org/pub/ruby/1.0/ruby-0.49.tar.gz) The earliest date mentioned in the CVS entries file is March 17, 1994. To me, the point of this whole thing is that the author's statement of "Ruby is a newer...language" is inaccurate. You're absolutely correct that I cannot definitely prove that "development on PHP started a year after Ruby." And language age comparisons are entirely meaningful in this case, given that the OA specifically describes Ruby as a newer language than PHP. Ruby is definitely clearer and cleaner. But it is certainly not newer.
aaronblohowiak · 2008-05-26
In the beginning, there was machine code. this is essentially inputting what the computer actually executed, without any translation or compilation ( http://en.wikipedia.org/wiki/First-generation_programming_language ) Then there was assembler/assembly. This is similar to the aforementioned, except easier to read. Assembly is a 1:1 mapping between symbols and their machine-understandable counterparts. This is the first step in the abstracting of programming code from executable code ( http://en.wikipedia.org/wiki/Second-generation_programming_language ) Then, there are so-called 3GL. These let you do fancy things like having named variables, symbolic manipulation, function calls, abstract (arbitrary) syntax. This encompasses many of the languages people use at work today (c/c++/java) ( http://en.wikipedia.org/wiki/Third-generation_programming_language ) It is important to note that the purpose of 3GL, like assembly before it, was to create a separation between what the programmer typed and what the machine ran. The latter being derived from the former according to its rules. ( http://en.wikipedia.org/wiki/Fourth-generation_programming_language ) 4GL are the next step along this line. The focus of 4GL is to make it that the code entered is as focused on the domain logic as possible, hiding the implementation details. The phrase "further from the machine and closer to the domain"in the wikipedia 4GL page sums it up nicely. To a chip designer, machine code is a high level…
mfp · 2008-03-06
The code has grown and become more complex in the last versions because I optimized it until directory traversal + glob matching got sensibly faster than Git's own (git-ls-files --exclude-standard doesn't do exactly the same thing as find-git-files, but meaningful performance comparisons can be done with the -d -o and -m -o options). It's still much smaller than metastore (1/3rd or so) even though it does much more now, however. You can take a look at the initial version of ometastore here: http://eigenclass.org/repos/gitweb?p=gibak.git;a=blob;f=ometastore.ml;… The functionality from metastore takes ~270 lines vs. ~1500 lines of C, the support for .gitignore takes another 70locs. It's got one or two bugs in the Gitignore support which I fixed later (and a silly bug in do_finally), but this code is simpler if you want to see what OCaml looks like in actual use (for a system tool, in this case). It's almost (if not actually, I don't remember) the "first version that typed", by the way.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close