GoHash string
 
        OK      bool
-       Log     []byte `datastore:"-"`        // for JSON unmarshaling
+       Log     string `datastore:"-"`        // for JSON unmarshaling only
        LogHash string `datastore:",noindex"` // Key to the Log record.
 }
 
        CompressedLog []byte
 }
 
-func PutLog(c appengine.Context, text []byte) (hash string, err os.Error) {
+func PutLog(c appengine.Context, text string) (hash string, err os.Error) {
        h := sha1.New()
-       h.Write(text)
+       io.WriteString(h, text)
        b := new(bytes.Buffer)
        z, _ := gzip.NewWriterLevel(b, gzip.BestCompression)
-       z.Write(text)
+       io.WriteString(z, text)
        z.Close()
        hash = fmt.Sprintf("%x", h.Sum())
        key := datastore.NewKey(c, "Log", hash, 0, nil)
 // logHandler displays log text for a given hash.
 // It handles paths like "/log/hash".
 func logHandler(w http.ResponseWriter, r *http.Request) {
+       w.Header().Set("Content-type", "text/plain")
        c := appengine.NewContext(r)
        h := r.URL.Path[len("/log/"):]
        k := datastore.NewKey(c, "Log", h, 0, nil)
 
        {"/todo", url.Values{"kind": {"build-go-commit"}, "builder": {"linux-386"}}, nil, &Todo{Kind: "build-go-commit", Data: &Commit{Hash: "0003"}}},
 
        // logs
-       {"/result", nil, &Result{Builder: "linux-386", Hash: "0003", OK: false, Log: []byte("test")}, nil},
+       {"/result", nil, &Result{Builder: "linux-386", Hash: "0003", OK: false, Log: "test"}, nil},
        {"/log/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", nil, nil, "test"},
        {"/todo", url.Values{"kind": {"build-go-commit"}, "builder": {"linux-386"}}, nil, nil},
 
        {"/result", nil, &Result{PackagePath: testPkg, Builder: "linux-386", Hash: "1001", GoHash: "0001", OK: true}, nil},
        {"/todo", url.Values{"kind": {"build-package"}, "builder": {"linux-386"}, "packagePath": {testPkg}, "goHash": {"0001"}}, nil, nil},
        {"/todo", url.Values{"kind": {"build-package"}, "builder": {"linux-386"}, "packagePath": {testPkg}, "goHash": {"0002"}}, nil, &Todo{Kind: "build-package", Data: &Commit{Hash: "1003"}}},
-       {"/result", nil, &Result{PackagePath: testPkg, Builder: "linux-386", Hash: "1001", GoHash: "0005", OK: false, Log: []byte("boo")}, nil},
+       {"/result", nil, &Result{PackagePath: testPkg, Builder: "linux-386", Hash: "1001", GoHash: "0005", OK: false, Log: "boo"}, nil},
 }
 
 func testHandler(w http.ResponseWriter, r *http.Request) {