115 lines
5.1 KiB
Plaintext
115 lines
5.1 KiB
Plaintext
= render "pages/project/menu"
|
||
|
||
%h1= title "RubyX, where it started"
|
||
|
||
.row
|
||
%p
|
||
Torsten Ruger started this on 10.04.2014 after having read the Blue Book 20 years earlier.
|
||
The main ideas were:
|
||
%p
|
||
%ul
|
||
%li 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.
|
||
%li Layers represent an interface, not an implementation
|
||
It is said that every problem in computing can be solved by adding another layer
|
||
of indirection. And so we have many layers, which, when done right, help us to
|
||
understand the system. (Read, layers are for us, not the computer)
|
||
But implementing each layer comes with added cost, often unnecessary.
|
||
%li Empowerment
|
||
I like the openness of ruby. Everyone can do what and how they want.
|
||
And change other peoples code in an easy and sensible way.
|
||
The best ideas survive and even better ones are coming.
|
||
Friendly competition as it were, cooperation, independent improvement all make
|
||
ruby gems better all the time.
|
||
%br
|
||
But ruby itself has not benefited from this in the same way (ie by ruby developers), because it is not in ruby.
|
||
%br
|
||
%li To get it done
|
||
Beats me why this hasn't been done before.
|
||
.row
|
||
%h1.center Thanks
|
||
%p.center 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.
|
||
%b
|
||
%a{:href => "https://github.com/seattlerb/wilson"} Wilson
|
||
got assimilated for similar reasons, ie small and no dependencies.
|
||
%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
|
||
%p
|
||
Lastly, but most importantly there is a spiritual 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
|