Friday, 10 October 2014

The Foundation (Parts I,II & III)

This is the core of the idea of how we can realize The Foundation as a reason for all people to have faith, because they have confidence based on actual knowledge, in the future of Humanity.

     https://drive.google.com/file/d/0B9MgWvi9mywhOWQtYXhsLWpaVkdoZUNOMmZ4UU50N0NjYmZv/view?usp=sharing

It's my daughter Helen's sixteenth birthday tomorrow. This is my present to her, which I promised in the document "Revolution" I wrote three years ago. For this project, she lost her father for five years. Please help me make it a reality, so that we can give her and billions of others, the gift of a really good higher education.

Love,
Ian

P.S. "The NSA refused to comment beyond a statement saying, “It should come as no surprise that NSA conducts targeted operations to counter increasingly agile adversaries.” The agency cited Presidential Policy Directive 28, which it claimed “requires signals intelligence policies and practices to take into account the globalization of trade, investment and information flows, and the commitment to an open, interoperable, and secure global Internet.” The NSA, the statement concluded, “values these principles and honors them in the performance of its mission.”

This was from: https://firstlook.org/theintercept/2014/10/10/core-secrets/

Tuesday, 7 October 2014

How to Design Software

This is a follow-up from my How to Write Programs which was apparently  utterly incomprehensible to 90% of "Free Software hackers," which, to anyone that does understand it, demonstrates its fundamental premiss.

What prompted me to start writing this was the blogger.com "system." It only seems to accept comments of 160 characters or something. Maybe there's a way to change that limit, but it should tell the "owner" of the blog what that is when it gives her the error. It didn't.

I consider a limit of 160 characters on comments anti-intellectual.

So I posted the long comments as an article (a new post, in the tech. blog jargon) and I wanted to refer to a particular paragraph of a previous post. I thought there might be an anchor for paragraphs, because this is the sort of thing that a lot of people would want to do. No there isn't.

I consider the inability to refer to particular paragraphs stupid.

So having insulted any and everyone who contributed so much as a line of css "code" to this "system," I will no go on to explain to everyone else how this sort of thing should be done.

Rather than writing shed-loads of perl/php/whatever-stupid-concrete-lock-in-hell-is-this-week's-fashion script and javascript, Define an abstract language for describing web content. And distribute a machine-readable abstract syntax for it in the form of a context-free grammar.And then define a general-purpose bottom-up term-rewriting system language, and define abstract syntax for it, in some sort of abstract assembler, or another special-purpose language of you like.

By the way, I am also bored that I keep saying the same thing over and over again ...

So you let people define their own translations of the content using this language. And you can even let them define database record layouts and stuff like that. And it can all be done securely because everything is defined by machine-readable formal syntax and semantics. And you can let people share these semantic definitions of abstract content, and so on and so forth.

Think of it like customized styles gone extreme.

Ian

Panicz wants kisses!

This is Panicz, responding to my comments to his comments on this response of mine to his email.
(Ian): These 'metrological ideals' are simply facts that anyone could
know who takes the trouble to actually think about them
I clearly must have misunderstood you then. I thought that you criticized the education system for not conveying the, as you call it, "fundamental principle of epistemology". Now it seems to me that you are claiming, that no educational system is needed, because anyone can make an effort to think for himself and reach that conclusion alone.

Is it then that you suggest that it would be better to abandon the idea of maintaining education systems, because people would as well do without them, or that the education systems that you've had experience with need to be fixed? (or did I misunderstand you completely?)
(Ian): Skepticism is the belief that knowledge is impossible, 'metrology' is quite literally "knowledge of measure" so metrology is the rational basis of all quantitative scientific knowledge. The idea that metrology is skeptical is absurd.
The claim that "skepticism is the belief that knowledge is impossible" is as naive as the claim that the word "relativism" can be interpreted in only one way. Although the skeptics did argue that knowledge is impossible, is not the subject of their arguments that is important (because such a claim is simply insane), but their arguments themselves. According to what you call WikipediA, the greek word "skeptikos" means "doubtful". The argument of Descartes is by all means skeptical, yet he does not claim that knowledge is impossible.

I do agree, though, that calling metrology a skeptical (or critical) science would be absurd. Therefore, clearly, this adjective did not apply to metrology itself, but to your interpretation of metrology, that is, the application of some principles of metrology to epistemology.
(Ian): I don't regard this as a problem at all, because it simply not true that "civilization is the struggle to make our lives effortless" The fact that you make such a ridiculous claim without justification is yet more evidence that you clearly do not understand that fundamental principle of epistemology which I enunciated.
I percieve your claim, that my claim is ridiculous, as ridiculous (because my claim seems rather obvious to me), yet you didn't bother to justify it either, which clearly proves that you also don't understand your fundamental principle of epistemology.

The reason for me aping you is actually not to prove that you don't understand what you're saying (although if one asserts the validity of your argument, then he or she would necessarily conclude the validity of mine, unless willing to accept inconsistency), but to note that -- although you seem to be very intelligent -- your communication skills need an improvement badly.

It would be OK if you wrote "I disagree with your claim because xxx, although I'm eager to hear your justification, because maybe I didn't understand you properly," instead of offending me right away. The one thing that I know from dealing with language processing, is that a natural language is one ambiguous bitch. (In addition, I have to admit that I'm not a native English speaker, and so I often find it difficult to choose the right words for my thoughts)
(Ian): The rest of your missive is merely a feeble appeal to blind faith that there is good in the world. I don't need blind faith, because I have actual knowledge that this is in fact the case.
That's good (although untrue).
(Ian): That good is God, who is the actuality of thought, and this
is something that is quite clearly outside your experience.
Interesting. Perhaps your insight and cognitive capabilities are much
greater than mine, but imagining that is beyond those humble capabilities.

My narrow mindset allows me only to imagine that your mental capabilities
are similar to mine (because that's the highest level of comprehension
that I can comprehend), and if it is so, then I need to assert that
the statement that you uttered is beyond your cognitive competence.
(I do agree with it, though)

Saturday, 4 October 2014

The Foundation (Part II)

This is a reformatted version of Dijkstra's "The Mathematics Behind the Banker's Algorithm" with half a page of comments regarding some interesting possibilities for optimization.

https://drive.google.com/file/d/0B9MgWvi9mywhTno5Y0VLakZDNGpTYW5jUHI3M0xLenZsdlhF/view?usp=sharing

Thursday, 2 October 2014

The Foundation (Part I)


I wrote this to try once again to explain what is the nature of the problem that one would have in verifying the integrity of any  software toolchain, whether it is aimed ultimately at the production of other software, or of hardware.

 https://github.com/IanANGrant/red-october/blob/master/judgemnt.pdf

This three page text is ostensively about verifying the integrity of a communications link operating over an un-trusted transport layer, but a compiler is really a type of communications channel.

I am sure everyone still reading this has wondered about the possibilities of using universal programming languages (universal in the Church-Turing sense) as communications protocols. For example, one could establish a point-to-point connection by writing a program which, when run, output two more programs: one which, when run, outputs a decoding pad for the next mesage one would transmit over that channel, and the other the decoder which prints the message text together with another program, which was the encoder for returning an
acknowledgement. Both endpoints would do this, and so the programs/messages would be exchanged, with each one encoding the text of the other.  Then these programs could include decisions not only about the encoding of data, choice of one-time pads, etc. but perhaps also the routes of messages, sending different parts via different trusted routes over similar channels etc. etc. The variations are endless, and limited only by the ingenuity of the programmers communicating over those channels.

And really, I sorely pity anyone charged with organising any kind of surveillance of a group of people who enjoy that sort of game. Cracking "the code" would be practically impossible, because there need never be any fixed concrete representation whatsoever of the fundamental encoding as it is transmitted over the transport medium: all of the knowledge about the current and future encodings can be sent over the previous "incarnations" of that and/or another
channel, and the encoding of channels thereby made non-deterministic:
this means that there could never be in principle, any mechanical
process whatsoever which could decode more than a few parts of any
of those messages. After this brief success, the poor would-be spy
would be right back at square one.

What I try to explain here is the essential distinction between what I call actual knowledge, as opposed to mere represented knowledge, such as a password, or an SSL certificate, or the documentation for some file format appearing on a web page. The distinction is that only in the case of actual knowledge does one know how and why one knows.

The motivation is the idea that by using actual rather than represented knowledge, it is possible to construct such a trustworthy system in practice. But there's a catch! The catch is that this will only work for an organisation whose motives and governance are completely open and transparent. This is because the technique relies upon mutual trust, which is something that cannot exist without openness and transparency. Bad guys just won't get it! To understand why (in case it is not immediately obvious to you, that is) you will need to read (or at least think carefully about) about how error-detection would work in such a system.

The text consists of a title page with the abstract, and two full pages. So it should be an easy read. I earlier sent out a nine page document entitled GNU Thunder, in which I attempted to describe what I consider to be essentially the same idea, but with the emphasis on compilers and interpreters, rather than communications. The Thunder text was a concrete suggestion for an implementation. This text however is more abstract. But these two documents could be considered to be complementary in two different senses.

I hope everyone enjoys this, and that it stimulates some interesting thoughts, and subsequent discussion, and that those thoughts are all good, and the discussion open and transparent. That way we could save ourselves an awful lot of really hairy metaprogramming!

Please feel free to copy either text and/or this message and pass it around. Neither of these two texts are copyright, and the more people that see them the better. Bad guys in particular need to know about this much more than the good ones do.

Monday, 29 September 2014

What is a Screen, Really?

Posted to:

    http://lists.gnu.org/archive/html/guile-devel/2014-09/msg00145.html

> But it would nice to get some new major features. Screen is old.. 27 years
> is heck a lot of time. What about the next 27 years? ;)

As far as its apparent functionality goes, GNU screen is one of the best pieces of GNU software I know: there is an unmistakably twisted sort of genius to what it does. But what I only discovered a week or so ago is that Screen is actually only one quarter of an idea that is now over 45 years old. This suggests that what to do over the next 27 years is to implement at least another quarter of it :-)

Here is what I claim is the original expression of Screen, which was called "the message interpreter":

At level 2 we find the "message interpreter" taking care of the allocation of the console keyboard via which conversations between the operator and any of the higher level processes can be carried out. The message interpreter works in close synchronism with the operator. When the operator presses a key, a character is sent to the machine together with an interrupt signal to announce the next keyboard character, whereas the actual printing is done through an output command generated by the machine under control of the message interpreter. (As far as the hardware is concerned the console teleprinter is regarded as two independent peripherals: an input keyboard and an output printer.) If one of the processes opens a conversation, it identifies itself in the opening sentence of the conversation for the benefit of the operator. If, however, the operator opens a conversation, he must identify the process he is addressing, in the opening sentence of the conversation, i.e. this opening sentence must be interpreted before it is known to which of the processes the conversation  is addressed! Here lies the logical reason for the introduction  of a separate sequential process for the console teleprinter, a reason that is reflected in its name, "message interpreter."

Above level 2 it is as if each process had its private  conversational console. The fact that they share the same physical console is translated into a resource restriction of the form "only one conversation at a time," a restriction that is satisfied via mutual synchronization. At this level the next abstraction has been implemented; at higher levels the actual console teleprinter loses its identity. (If the message interpreter had not been on a higher level than the segment controller, then the only way to implement it would have been to make a permanent reservation in core for it; as the conversational vocabulary might become large (as soon as our operators wish to be addressed in fancy messages), this would result in too heavy a permanent demand upon core storage. Therefore, the vocabulary in which the messages are expressed is stored on segments, i.e. as information units that can reside on the drum as well. For this reason the message interpreter is one level higher than the segment controller.)

http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD196.PDF

The other layers of the THE multiprogramming system were equally radical, and still I think there are many people who interpret these ideas in terms of what they already know, and in so doing, they miss the point completely, which is that there is a core methodology that is being _mechanically unfolded_ into a whole coherent design for what we nowadays think of as "an operating system kernel." But modern kernels do not have this economy of principles: witness the insanity
that the Linux kernel device driver stack has mutated into!

When you read this, think of the sequential processes not as "processes" as we know them, but as "processors" or "virtual machines". And don't think of segments and pages in terms of segmented memory models with virtual page maps and swap space, think of them as a kind of storage area network.

So I think we should implement GNU Screen, layers 0 and 1 in addition to layers 2 and 3.

Bankers

Ten of the world’s leading banks have racked up fines and similar "conduct costs" of nearly £150 billion over a period of just five years.