moving stuff to make space for new front page
This commit is contained in:
143
project/history.html
Normal file
143
project/history.html
Normal 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"> </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"> </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
83
project/ideas.html
Executable 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
99
project/motivation.html
Executable 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
72
project/spiritual.md
Executable 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.
|
Reference in New Issue
Block a user