moving stuff to make space for new front page

This commit is contained in:
Torsten Ruger
2015-08-08 20:33:11 +03:00
parent b2419e0bc2
commit 8d5c34d1e8
10 changed files with 110 additions and 121 deletions

143
project/history.html Normal file
View File

@ -0,0 +1,143 @@
---
layout: project
title: Salama, where it started
---
<div class="row vspace10">
<div class="span12 center">
<h1><span></span></h1>
<p></p>
</div>
</div>
<div class="row ">
<div class="span1"> &nbsp; </div>
<div class="span10">
<p>
Torsten Ruger started this on 10.04.2014 after having read the Blue Book 20 years earlier.
The main ideas were:
</p>
<p>
<b>Mikrokernel</b>: 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/>
<b>Layers represent an interface, not an implementation</b>:
It is said that every problem in computing can be solved by adding anohter 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 unneccessary. Layers can and should be collapsed
in the implementation. Inlining, is a good example of this.
<br/>
<b>Empowerment</b>: 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, independant 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/>
<b>To get it done</b>: I don't know why this has not been done before, it seems so obvious.
The Blue Book influence has left me interested in virtual machines and that hasn't gone away for
so long. So when i bought my raspberry pi and had a real need for speed, the previous ecommerce project
left me feeling that anything could be done. And so i started.
<br/>
</p>
</div>
</div>
<div class="row vspace20">
<div class="span12 center">
<h1><span>Thanks</span></h1>
<p>This would not have happened without:</p>
</div>
</div>
<!-- About Us -->
<div class="row vspace20">
<div class="span4">
<h2 class="center">Smalltalk</h2>
<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.
</p>
</div>
<div class="span4">
<h2 class="center">Ruby and Rails</h2>
<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>
<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>
<p>
</p>
</div>
<div class="span4">
<h2 class="center">Synthesis</h2>
<p>Synthesis</a> 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>
<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 </a> in the endeavour to understand what
they are in any higher language terms.
</p>
</div>
</div>
<div class="row vspace20">
<div class="span12 center">
<p>Many other steps on the way that have left their mark:</p>
</div>
</div>
<div class="row ">
<div class="span1"> &nbsp; </div>
<div class="span10">
<p>
<b><a href="http://judy.sourceforge.net/">Judy</a></b> 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>
<p>
<b><a href="http://metasm.cr0.org/">Metasm</a></b> finally confirmed what i had suspected for a while.
Namely that you don't need C to generate machine code. Metasm has be been assmbling, 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>
<p>
<b><a href="https://github.com/cyndis/as">As</a></b> 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 </a> </b>got assimilated for similar reasons, ie small and
no dependencies.
</p>
<p>
<b><a href="http://kschiess.github.io/parslet/">Parslet</a></b> is great, thanks Kasper!
Parslet makes parsing possible for everyone.
</p>
<p>
<b><a href="http://bundler.io/">Bundler</a></b> just makes you wonder how we managed before.
Thanks to Yahuda, also for merb, which is not forgotten, and thor.
</p>
</div>
</div>
<div class="row vspace20">
<div class="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 <a href="spiritual.html">here</a>, thinking that it won't concern
most people which is fine. I don't really want to talk about it, but i can't leave it unsaid either.</p>
</div>
</div>

83
project/ideas.html Executable file
View File

@ -0,0 +1,83 @@
---
layout: project
title: Effectiveness, not efficiency
sub-title: By way of a new look at programming.
---
<div class="row vspace20">
<div class="span4">
<h2 class="center"> Where to go</h2>
<p>
When making the distinction between effectiveness and efficiency i like to think of transport.
</p>
<p>
Efficiency is going fast, like an airplane is much more efficient than a car and that is more so than walking.
</p>
<p>
Effectiveness on the other hand is how straight your route is. Say you're in Hamburg and want to go to Berlin, then
it is not effective to go to Rome first.
</p>
<p>
Ruby, like python and mother smalltalk, let us be more effective at programming. We accept that they are not efficient,
but i think that can be changed.
</p>
<p>
But even while ruby has blossomed we have seen noticeable increase in effectiveness with so called dsl's and
what is generally called meta-programming.
</p>
<p>
But meta-programming is just a way to say that we manipulate the program just as we manipulate data. Off course! But
to do that effectively we need a better model of what an object oriented program actually is.
</p>
</div>
<div class="span4">
<h2 class="center">Understandability</h2>
<p>
The way i see it is that it is the understandibility that makes ruby or python more effective. As we read much more
code than write (even it's our own), focusing on descriptive programs helps.
</p>
<p>
But you only have to look at even rubies basic blocks, to see how misleadingly language is used.
We use Strings to represent words and text, while we store data in Arrays or Hashes.
If you look these up in a dictionary you may find: a thread used for tying,
a military force, or a dish of diced meat and vegetables. So we have a way to go there.
</p>
<p>
But even more disconcerting is that we have no model of how an object oriented system actually works. We know what it
does off course, as we programm using it all the time. But how it does it is not clear.
</p>
<p>
At least not clear in the sense that i could go and read it's code. Ruby like python are written in c and that just
is not easily understandable code.
</p>
</div>
<div class="span4">
<h2 class="center">Playing computer</h2>
<p>
When programming, we fly blind. We have no visual idea of what the system that we write will do and the only way
to get feedback is to have the final version run. Bret Victor has put this
<a href="http://vimeo.com/36579366"> into words well</a>.
</p>
<p>
So when we program, it's actually mostly in our head. By playing computer, ie simulating in the head what the computer
will do when it runs the programm.
</p>
<p>
And so what we consider good programmers, are people who are good at playing computer in their head.
</p>
<p>
But off course we have the computer right there before us. Really the computr should do it rather than
us having to simulate it.
</p>
<p>
What will come out of that line when we actually manage to put it into practise is unclear, though it is certain it
will be easier to do and result in hugely more powerful programs
</p>
<p>
Yet to get there we need better tools. Better tools that let us understand what we are doing better. Better models of
what we call programming, and by better i mean easier to understand by normal people (not the computer simluators).
</p>
</div>
</div>

99
project/motivation.html Executable file
View File

@ -0,0 +1,99 @@
---
layout: project
title: Ruby in Ruby
sub-title: Salama hopes make the the mysterious more accessible, shed light in the farthest (ruby) corners, and above all, <b>empower you</b>
---
<div class="row vspace20">
<div class="span4">
<h2 class="center"> A better tool, a better job</h2>
<p>
Ruby is the better tool to do the job. Any software job that is. We who use ruby daily do so because it is
more productive, better in almost every way. The only downside is speed and we argue that with cheap resources.
</p>
<p>
Why it has taken this long to even seriously attempt a ruby implementation in ruby is due to the overwhelming
influence of C (folks).
</p>
<p>
Just a short and subjective list of why ruby is the better tool:
<ul>
<li>More fun. Ask anyone :-) </li>
<li>Lets you focus on the task</li>
<li>Elegant, both in syntax and solution</li>
<li>Understandable</li>
<li>Much faster to code</li>
</ul>
</p>
</div>
<div class="span4">
<h2 class="center">Boys and toys</h2>
<p>
Rails has evolved tremendously from what was already a good start. All the development <em>around</em> it has nurtured
ruby developement in all areas. Rails and all those parts make up a most mature and advanced software system.
</p>
<p> The "rails effect" is due to the accessibility of the system, imho. Ie it is written in ruby.</p>
<p> Ruby itself has not enjoyed this rails effect, and that is because it is written in C (or c++) </p>
<p> It is my firm belief that given a vm in ruby, ruby development will "take off" too. In other words, given an
easy way to improve his tools, a developer will do so. Easy means understandable and that means ruby for a
ruby developer
</p>
</div>
<div class="span4">
<h2 class="center">Step to Indepencance</h2>
<p>
The first thing any decent compiler does, is compile itself. It is the maturity test of a language to implement
itself in itself, and the time has come for ruby. The mark of growing up is being independant, in ruby's case of C.
</p>
<p>
Having just learned Assembler, i can attest what a great improvement C is over Assembler.
But that was then and it is not just chance that developemnt has been slow in the last 50 years.
</p>
<p>
There is this attitude C believers elude and since they are the gatekeepers of the os,
everyone is fooled into believing only c is fast. Whereas what is true is that <em>static</em> code is fast.
</p>
<p>
On a very similar note we are lead to believe that os features must be used from c. Whereas system calls
are software interrupts and only the c std library makes them look like c functions. But they are not.
</p>
</div>
</div>
<div class="span12">
<p class="center"><span> So what does empowerment mean. </span></p>
<p>
For me it is means owning your tools.
For everyone to really be able to unfold their ideas and potential.
Not to be stuck, rather to be able to change anything one wishes.
We usually own the code we write, and we have seen amazing progress in opening up new ideas.
</p>
<p>
So it is hard to even think of ruby holding us back, and it isn't off course, only current implementations of it are.
</p>
<p>
So concretely what does this mean: Well i don't know do i! That's the whole point, that anyone can improve it beyond
the original creators horizon.
</p>
<p>
But to mention a few things that have crossed my mind (and that i will most certainly not implement)
<ul>
<li> Efficient vector extensions that use cpu/gpu instructions not supported in the core</li>
<li> Efficient graphics extensions</li>
<li> New language features, ie real dsl's that extend the parser on the fly </li>
<li> Off course there is always new cpu's and os's</li>
<li> Better implementation of core datastructures. Did i hear digital trees being mentioned?</li>
<li> Better gc's, better memory management.</li>
<li> Superoptimization! (heard of that one?)</li>
</ul>
</p>
<p>
And the fun thing is off course that all the above can be created as gems. No recompiling, no rvm/rbenv.
Anyone can choose how they want to pimp
their vm in the same way as you can decide what stack/tools you use in a rails project. And we have the essential
tool to do this: the bundler.
</p>
<p> And off course democracy decides what is good and what will stay. Natural extinction and all.</p>
</div>

72
project/spiritual.md Executable file
View File

@ -0,0 +1,72 @@
---
layout: project
title: Yes, there is a spiritual side
sub-title: It is the question that drives us
---
It's taken me a while to come out with it, but here it goes. The nice quote (got it?) has truth in it. Though we often don't
know what the question is and that is fine. It is the search that drives us and almost defines us as humans.
The search for higher meaning, the meaning of life, truth, love or any of them in a mix, is what makes us human.
Alas, the search for wealth, comfort or as in the case of science, facts, is not fulfilling and thus i need to make the
distinction here.
### It started with truth and ended with love
In hindsight it was even the search for truth that got me to study physics 25 odd years ago.
Not conciously at the time, and it was only much later that i could express the anger at the deception.
There is off course no truth in Physics, or science, though it was a hard nut to swallow.
Science is about facts, usually irrelavant facts. Irrelevant to the person's life that is learning and teaching.
It's about talking in detail about the irrelevant, while never mentioning that it is irrelevant.
Science is about pretence of knowlege, not real knowledge which is about life, love, or something meaningful.
The sign of intelligence is surely learning and reflection.
But while it is not a big step to realise that what everyone needs to learn most is how to be fullfilled
(colloqually called happy), and the reflection that matters most is that of ones own life,
it is also a step rarely taken.
Sadly all the talk about not meaningful things is keeping most people quite busy and away from any meaningful self-searching.
I have done my spiritual search, it started long ago, lead me to my master and finding the truth and love.
Spiritually i have searched and i have found. I am left without question. That is, for me (not generally, or you) i have answers to any meaningful question. And i am completely fulfilled in my life, my work, and most importantly my love. My whole life is a whole, not as it used to be many distinct parts and i have no problems, either in daily life or in general.
### An echo, karma unfulfilled
So why am still doing this and not out there teaching. At least it seems that anyone who has realized anything feels the
need to go forth and tell others. But it is not my way and that is ok, in the same way that not everyone who learns english
becomes an english teacher.
The best i can come up with it that there is still karma that needs to be cleaned. Just to clarify, karma is unresolved
problems left from our forebares or ones own action before they were concious. I was surely not concious when i first
started with virtual machines and so i get to clean that up now.
But don't misunderstand, i don't resent my karma (another great matrix line). I accept it and am willing to clean my bit
up, even i can see that much of it has been handed down from my parents. I don't blame them (or anyone) as they got handed
their bit from their parents and did their best. It is the way of things, and i have long ago resolved to do my bit
to further human conciousness as i can (starting in me).
So i just wanted to say that this project in itself is not important in any sense of the word.
And the main meaning i get from it, is the cleaning of my karma.
### The way back
I noticed that quite quickly after i started the project, i was diverging radically from old ideas. And actually that
is not just from my old ideas, which is nice in itself. A certain freshness and the fact that i am not just going over
old ground. No, it's from any old ideas that i am aware of.
I just noticed another crystal project with similar goals, but sort of more traditional choices (salama was called
crystal in the beginning). Ie llvm to generate binaries
and a more static approach. And that would have been me as a younger version. Now i go the long way because i know i have
all the time i need, and what matters is direction, not speed.
The way it is happening is that i am reexamining just about everything i touch. A part of that is the kind of no stone
unturned mentality. Thoroughness in a way.
But mostly it is a reexamination of everything i learned. It is going back over old ground and really looking at things,
seeing them in a fresh way and coming to mostly new conclusions. Off course the main reason we get so much done so quickly
in software engineering these days is that we build on previous, and other peoples work. But so much of that is just
layer on layers of stuff that is not needed. And they are not just baggage, they really stop doing things differently.
Going over this old ground and finding new ways does give me a certain satisfaction and already has lead to a much better
understanding of what programming actually is. Also i find it meaningful that this sense of rediscovery is so similar to
what the spiritual path was about for me. And the idea does make me smile, that i am now a spiritual programmer.