OK, turing.

<- leave blank

Mon Oct 14 20:56:14 EDT 2019

From: Doug McIlroy <doug@cs.dartmouth.edu>
Date: Sat, 12 Oct 2019 00:42:42 -0400
To: tuhs@tuhs.org
Subject: Re: [TUHS] What was your "Aha, Unix!" moment?
Errors-To: tuhs-bounces@minnie.tuhs.org
Sender: "TUHS" <tuhs-bounces@minnie.tuhs.org>

For a contrast in aha moments, consider this introduction to
an early Apple (Apple II, I think).

When my wife got one, my natural curiosity led me to try to
make "Hello world".

I asked her what to use as an editor and learned it all depends
on what you're editing.

So I looked in the manual.  First thing you do to make a C program
is to set up a "project", as if it was a corporate undertaking.

I found it easier to write a program in some other editor than
the one for C. Bad idea.  Every file had a type and that editor
produced files of some type other than C program.

After succumbing to the Apple straitjacket, I succeeded.

Then I found "Hello world" given as an example in the manual.
The code took up almost a page; real men make programs that
set up their own windows.

Aha, Apple!  Not intended for programmers.
And that didn't change until OS X.

Doug



Mon Oct 14 20:29:18 EDT 2019
hget http://www.9legacy.org/download/go/go1.11.5-plan9-amd64-bootstrap.tbz >
go1.11.5-plan9-amd64-bootstrap.tbz
tar vxf go1.11.5-plan9-amd64-bootstrap.tbz
go-plan9-amd64-bootstrap/.gitattributes
cpu% lc

Mon Oct 14 20:09:25 EDT 2019
hget http://www.9legacy.org/download/go/go1.13.1-plan9-amd64-bootstrap.tbz
>go1.13.1-plan9-amd64-bootstrap.tbz

tar vxf go1.13.1-plan9-amd64-bootstrap.tbz
[lot of output]
go-plan9-amd64-bootstrap/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/internal/analysisutil/util.go
tar: // Package analysisutil defines various helper functions
// used by two or more packages beneath go/: "
	"go/ast"
	"go/printer"
	"go/token"
	"go/types"
	"io/ioutil"
)

// Format returns a string representation of the expression.
func Format(fset *token.FileSet, x ast.Expr) string {
	var b bytes.Buffer
	printer.Fprint(&b, fset, x)
	return b.String()
}

// HasSideEffects reports whether evaluation of e has side effects.
func HasSideEffects(info *types.Info, e ast.Expr) bool {
	safe := true
	ast.Inspect(e, func(node ast.Node) bool {
		switch n := node.(type) {
		case *ast.CallExpr:
			typVal := info.Types[n.Fun]
			switch {
			case typVal.IsType():
				// Type conversion, which is safe.
			case typVal.IsBuiltin():
				// Builtin func, conservatively assumed to not
				// be safe for now.
				safe = false
				return false
			default:
				// A non-builtin func or method call.
				// Conservatively assume that all of them have
				// side effects for now.
				safe = false
				return false
			}
		case *ast.UnaryExpr:
			if n.Op == token.ARROW {
				safe = false
				return false
			}
		}
		return true
	})
	return !safe
}

// Unparen returns e with any enclosing parentheses stripped.
func Unparen(e ast.Expr) ast.Expr {
	for {
		p, ok := e.(*ast.ParenExpr)
		if !ok {
			return e
		}
		e = p.X
	}
}

// ReadFile reads a file and adds it to the FileSet
// so that we can report errors against it using lineStart.
func ReadFile(fset *token.FileSet, filename string) ([]byte, *token.File, error) {
	content, err := ioutil.ReadFile(filename)
	if err != nil {
		return nil, nil, err
	}
	tf := fset.AddFile(filename, -1, len(content))
	tf.SetLinesForContent(content)
	return content, tf, nil
}

// LineStart returns the position of the start of the specified line
// within file f, or NoPos if there is no line of that number.
func LineStart(f *token.File, line int) token.Pos {
	// Use binary search to find the start offset of this line.
	//
	// TODO(adonovan): eventually replace this function with the
	// simpler and more efficient (*go/token.File).LineStart, added
	// in go1.12.

	min := 0 // inclusive
	max := f.Size() // exclusive
	for {
		offset := (min + max) / 2
		pos := f.Pos(offset)
		posn := f.Position(pos)
		if posn.Line == line {
			return pos - (token.Pos(posn.Column) - 1)
		}

		if min+1 >= max {
			return token.NoPos
		}

		if posn.Line < line {
			min = offset
		} else {
			max = offset
		}
	}
}
: non-numeric checksum in header
tar: bad archive header checksum in go1.13.1-plan9-amd64-bootstrap.tbz: name //
Package analysisutil defines various helper functions
// used by two or more packages beneath go/...; expected 037777777777 got 0127232

Mon Oct 14 20:08:26 EDT 2019
tar vxf go1.13.1-plan9-amd64-bootstrap.tbz
....
go-plan9-amd64-bootstrap/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/internal/analysisutil/util.go
tar: // Package analysisutil defines various helper functions
// used by two or more packages beneath go/: "
	"go/ast"
	"go/printer"
	"go/token"
	"go/types"
	"io/ioutil"
)

// Format returns a string representation of the expression.
func Format(fset *token.FileSet, x ast.Expr) string {
	var b bytes.Buffer
	printer.Fprint(&b, fset, x)
	return b.String()
}

// HasSideEffects reports whether evaluation of e has side effects.
func HasSideEffects(info *types.Info, e ast.Expr) bool {
	safe := true
	ast.Inspect(e, func(node ast.Node) bool {
		switch n := node.(type) {
		case *ast.CallExpr:
			typVal := info.Types[n.Fun]
			switch {
			case typVal.IsType():
				// Type conversion, which is safe.
			case typVal.IsBuiltin():
				// Builtin func, conservatively assumed to not
				// be safe for now.
				safe = false
				return false
			default:
				// A non-builtin func or method call.
				// Conservatively assume that all of them have
				// side effects for now.
				safe = false
				return false
			}
		case *ast.UnaryExpr:
			if n.Op == token.ARROW {
				safe = false
				return false
			}
		}
		return true
	})
	return !safe
}

// Unparen returns e with any enclosing parentheses stripped.
func Unparen(e ast.Expr) ast.Expr {
	for {
		p, ok := e.(*ast.ParenExpr)
		if !ok {
			return e
		}
		e = p.X
	}
}

// ReadFile reads a file and adds it to the FileSet
// so that we can report errors against it using lineStart.
func ReadFile(fset *token.FileSet, filename string) ([]byte, *token.File, error) {
	content, err := ioutil.ReadFile(filename)
	if err != nil {
		return nil, nil, err
	}
	tf := fset.AddFile(filename, -1, len(content))
	tf.SetLinesForContent(content)
	return content, tf, nil
}

// LineStart returns the position of the start of the specified line
// within file f, or NoPos if there is no line of that number.
func LineStart(f *token.File, line int) token.Pos {
	// Use binary search to find the start offset of this line.
	//
	// TODO(adonovan): eventually replace this function with the
	// simpler and more efficient (*go/token.File).LineStart, added
	// in go1.12.

	min := 0 // inclusive
	max := f.Size() // exclusive
	for {
		offset := (min + max) / 2
		pos := f.Pos(offset)
		posn := f.Position(pos)
		if posn.Line == line {
			return pos - (token.Pos(posn.Column) - 1)
		}

		if min+1 >= max {
			return token.NoPos
		}

		if posn.Line < line {
			min = offset
		} else {
			max = offset
		}
	}
}
: non-numeric checksum in header
tar: bad archive header checksum in go1.13.1-plan9-amd64-bootstrap.tbz: name //
Package analysisutil defines various helper functions
// used by two or more packages beneath go/...; expected 037777777777 got 0127232

Mon Oct 14 18:25:27 EDT 2019
<img src="https://s3.lvplc.com/61/41/6176141_1_1475929272.jpg">
Only proven questionnaire and serious relations.<a
href=http://revq.ru/see>Happiness is one click away!</a>

Mon Oct 14 16:36:22 EDT 2019
diff -r f23608703701 lib/vgadb
--- a/lib/vgadb Sun Oct 13 09:02:04 2019 +0200
+++ b/lib/vgadb Mon Oct 14 22:36:21 2019 +0200
@@ -437,6 +437,7 @@
	vid=0x8086 did=0x2a42 # Intel 4 Series Mobile
	vid=0x8086 did=0x0a16 # Intel 4th Gen Core (HD 4400)
	vid=0x8086 did=0x0412 # Intel 4th Gen Core (HD 4600)
+ vid=0x8086 did=0x0402 # Xeon E3-1200 v3/4th Gen Core Processor
	link=vga
	hwgc=igfxhwgc
	ctlr=igfx linear=1
diff -r f23608703701 sys/src/cmd/aux/vga/igfx.c
--- a/sys/src/cmd/aux/vga/igfx.c Sun Oct 13 09:02:04 2019 +0200
+++ b/sys/src/cmd/aux/vga/igfx.c Mon Oct 14 22:36:21 2019 +0200
@@ -367,6 +367,7 @@
		igfx->isult = 1;
		/* wet floor */
	case 0x0412: /* HD 4600 - 4th Gen Core */
+ case 0x0402: /* Xeon E3-1200 v3/4th Gen Core Processor */
		return TypeHSW;
	case 0x0166: /* 3rd Gen Core - ThinkPad X230 */
	case 0x0152: /* 2nd/3rd Gen Core - Core-i3 */


Mon Oct 14 13:17:29 EDT 2019
redacted

Sun Oct 13 19:04:38 EDT 2019
re 7038

no one can help you.

Sun Oct 13 15:16:11 EDT 2019
disco version: 2.3

Connecting...2019/10/12 01:20:06 Session Failed
2019/10/12 01:20:06 Unable to fetch discord authentication token.  Post
https://discordapp.com/api/v6/auth/login: x509: failed to load system roots and no
roots provided; open /sys/lib/tls/ca.pem: '/sys/lib/tls/ca.pem' does not exist


Sun Oct 13 00:54:52 EDT 2019
Oh god, i'm in this strange ok, turing pastebin-thingy website.  I don't know what
this is.  Can anybody help me?  Lol.

Sun Oct 13 00:16:25 EDT 2019
[$Tk] Broken: "sys: trap: fault read addr=0x137 pc=0x0002ecc5"


prev | next