118 lines
4.6 KiB
Plaintext
118 lines
4.6 KiB
Plaintext
|
\---
|
|||
|
layout: project
|
|||
|
title: RubyX, where it started
|
|||
|
\---
|
|||
|
.row.vspace10
|
|||
|
.span12.center
|
|||
|
%h1
|
|||
|
%span
|
|||
|
%p
|
|||
|
.row
|
|||
|
.span1
|
|||
|
.span10
|
|||
|
%p
|
|||
|
Torsten Ruger started this on 10.04.2014 after having read the Blue Book 20 years earlier.
|
|||
|
The main ideas were:
|
|||
|
%p
|
|||
|
%b> Mikrokernel
|
|||
|
\: The microkernel idea: anything that can be left out, should, puts a nice upper limit
|
|||
|
on things and at the same time provides a great cooking pot for everyone else to try out their ideas.
|
|||
|
%br/
|
|||
|
Given gems and bundler this also seems an obvious choice. I really hope to see things i hadn't even thought of.
|
|||
|
%br/
|
|||
|
= succeed ":" do
|
|||
|
%b Layers represent an interface, not an implementation
|
|||
|
%br/
|
|||
|
= succeed ":" do
|
|||
|
%b Empowerment
|
|||
|
%br/
|
|||
|
But ruby itself has not benefited from this in the same way (ie by ruby developers), because it is not in ruby.
|
|||
|
%br/
|
|||
|
= succeed ":" do
|
|||
|
%b To get it done
|
|||
|
%br/
|
|||
|
.row
|
|||
|
.span12.center
|
|||
|
%h1
|
|||
|
%span Thanks
|
|||
|
%p This would not have happened without:
|
|||
|
/ About Us
|
|||
|
.row
|
|||
|
.tripple
|
|||
|
%h2.center Smalltalk
|
|||
|
%p
|
|||
|
Smalltalk is the mother of OO for me. Adele Goldberg has written down the details of early implementations in the
|
|||
|
Blue Book, which made a great impression on me. Having read it, mri code is quite easy to understand.
|
|||
|
%br/
|
|||
|
Unfortunately Smalltalk was too far ahead of it's time and used the image, the implications of which are still
|
|||
|
not understood imho.
|
|||
|
%br/
|
|||
|
Additional bad luck struck when, in Steven Jobs great heist of the PARC UI, he did not recognise the value of it's
|
|||
|
implementation language and so pure OO did not get the same boost as the gui. Instead we got difficult c dialects.
|
|||
|
.tripple
|
|||
|
%h2.center Ruby and Rails
|
|||
|
%p
|
|||
|
After years of coding Java, Ruby was a very fresh wind. Smalltalk reborn without the funny syntax or image.
|
|||
|
Instead of the image we now have gems, git and bundler, so code exchange has never been easier.
|
|||
|
%p
|
|||
|
Rails has sort of given Ruby it's purpose and made it grow from a perl like scripting language to a server programming
|
|||
|
environment with all the whistles and bells. Rails maturity and code quality make it not only a joy to use,
|
|||
|
but an excellent source for good ruby practises.
|
|||
|
%p
|
|||
|
.tripple
|
|||
|
%h2.center Synthesis
|
|||
|
%p
|
|||
|
Synthesis is a microkernel OS written
|
|||
|
in the 80's by Alexia Massalin which not only proves the validity of the microkernel idea, but also
|
|||
|
introduces self modifying code into, of all places, the OS.
|
|||
|
%p
|
|||
|
Alexia has raised questions about the nature of code and ways of programming which are still unresolved.
|
|||
|
I regularly reread the thesis and especially the chapter on
|
|||
|
%a{:href => "http://valerieaurora.org/synthesis/SynthesisOS/ch4.html"} Quajects
|
|||
|
in the endeavour to understand what
|
|||
|
they are in any higher language terms.
|
|||
|
.row
|
|||
|
.span12.center
|
|||
|
%p Many other steps on the way that have left their mark:
|
|||
|
.row
|
|||
|
.span1
|
|||
|
.span10
|
|||
|
%p
|
|||
|
%b
|
|||
|
%a{:href => "http://judy.sourceforge.net/"} Judy
|
|||
|
has been a major source of inspiration and opened new
|
|||
|
ways of thinking about data structures and indeed coding. It has been the basis of two databases i wrote and together
|
|||
|
with Synthesis redefined the meaning of speed for me.
|
|||
|
%p
|
|||
|
%b
|
|||
|
%a{:href => "http://metasm.cr0.org/"} Metasm
|
|||
|
finally confirmed what i had suspected for a while.
|
|||
|
Namely that you don't need C to generate machine code. Metasm has be been assembling, deassembling and
|
|||
|
compiling for several cpu's since 2007, in 100% ruby.
|
|||
|
A great feat, and the only reason i don't use it is because it is too big (for me to understand).
|
|||
|
%p
|
|||
|
%b
|
|||
|
%a{:href => "https://github.com/cyndis/as"} As
|
|||
|
ended up being the starting point for the assembly layer.
|
|||
|
It was nice and small and produced working ARM code, which is what i wanted, as raspberry is arm.
|
|||
|
= succeed "got" do
|
|||
|
%b
|
|||
|
%a{:href => "https://github.com/seattlerb/wilson"} Wilson
|
|||
|
%p
|
|||
|
%b
|
|||
|
%a{:href => "http://kschiess.github.io/parslet/"} Parslet
|
|||
|
is great, thanks Kasper!
|
|||
|
Parslet makes parsing possible for everyone.
|
|||
|
%p
|
|||
|
%b
|
|||
|
%a{:href => "http://bundler.io/"} Bundler
|
|||
|
just makes you wonder how we managed before.
|
|||
|
Thanks to Yahuda, for starting it and Andre for making it fantastic.
|
|||
|
.row
|
|||
|
.span12.center
|
|||
|
%p
|
|||
|
Lastly, but most importantly there is a siritual side to this too. Actually to anything i have done for at
|
|||
|
least 15 years, and i just mention it
|
|||
|
= succeed "," do
|
|||
|
%a{:href => "spiritual.html"} here
|