diff --git a/database/database.go b/database/database.go
index 259ce17..584a027 100644
--- a/database/database.go
+++ b/database/database.go
@@ -467,7 +467,7 @@
 	return subdirs, err
 }
 
-// Get gets the package documenation and sub-directories for the the given
+// Get gets the package documentation and sub-directories for the the given
 // import path.
 func (db *Database) Get(path string) (*doc.Package, []Package, time.Time, error) {
 	c := db.Pool.Get()
@@ -515,7 +515,7 @@
     return redis.call('HDEL', 'ids', path)
 `)
 
-// Delete deletes the documenation for the given import path.
+// Delete deletes the documentation for the given import path.
 func (db *Database) Delete(path string) error {
 	c := db.Pool.Get()
 	defer c.Close()
@@ -776,7 +776,7 @@
 	c.Send("SCAN", cursor, "MATCH", "pkg:*")
 	c.Flush()
 	for {
-		// Recieve previous SCAN.
+		// Receive previous SCAN.
 		values, err := redis.Values(c.Receive())
 		if err != nil {
 			return err
diff --git a/database/database_test.go b/database/database_test.go
index 1ab5c5a..5d21e78 100644
--- a/database/database_test.go
+++ b/database/database_test.go
@@ -121,7 +121,7 @@
 	}
 	actualImporters, err := db.Importers("github.com/user/repo/foo/bar")
 	if err != nil {
-		t.Fatalf("db.Importers() retunred error %v", err)
+		t.Fatalf("db.Importers() returned error %v", err)
 	}
 	expectedImporters := []Package{{"github.com/user/repo/foo/bar", "hello"}}
 	if !reflect.DeepEqual(actualImporters, expectedImporters) {
@@ -129,7 +129,7 @@
 	}
 	actualImports, err := db.Packages(pdoc.Imports)
 	if err != nil {
-		t.Fatalf("db.Imports() retunred error %v", err)
+		t.Fatalf("db.Imports() returned error %v", err)
 	}
 	for i := range actualImports {
 		if actualImports[i].Path == "C" {
diff --git a/deploy/redis.conf b/deploy/redis.conf
index e2b3ee7..37f34be 100644
--- a/deploy/redis.conf
+++ b/deploy/redis.conf
@@ -263,7 +263,7 @@
 #
 # A slave with a low priority number is considered better for promotion, so
 # for instance if there are three slaves with priority 10, 100, 25 Sentinel will
-# pick the one wtih priority 10, that is the lowest.
+# pick the one with priority 10, that is the lowest.
 #
 # However a special priority of 0 marks the slave as not able to perform the
 # role of master, so a slave with priority of 0 will never be selected by
diff --git a/doc/code.go b/doc/code.go
index af2b537..7e35c54 100644
--- a/doc/code.go
+++ b/doc/code.go
@@ -73,7 +73,7 @@
 type AnnotationKind int16
 
 const (
-	// Link to export in package specifed by Paths[PathIndex] with fragment
+	// Link to export in package specified by Paths[PathIndex] with fragment
 	// Text[strings.LastIndex(Text[Pos:End], ".")+1:End].
 	LinkAnnotation AnnotationKind = iota
 
diff --git a/gosrc/github.go b/gosrc/github.go
index 0de8968..4a37388 100644
--- a/gosrc/github.go
+++ b/gosrc/github.go
@@ -109,6 +109,13 @@
 	}
 
 	if _, err := c.getJSON(expand("https://api.github.com/repos/{owner}/{repo}/contents{dir}?ref={tag}", match), &contents); err != nil {
+		// The GitHub content API returns array values for directories
+		// and object values for files. If there's a type mismatch at
+		// the beginning of the response, then assume that the path is
+		// for a file.
+		if e, ok := err.(*json.UnmarshalTypeError); ok && e.Offset == 1 {
+			return nil, NotFoundError{Message: "Not a directory"}
+		}
 		return nil, err
 	}
 
diff --git a/gosrc/gosrc_test.go b/gosrc/gosrc_test.go
index 84e81f3..e4daf47 100644
--- a/gosrc/gosrc_test.go
+++ b/gosrc/gosrc_test.go
@@ -48,7 +48,7 @@
 		`<meta name="go-import" content="">` +
 		// go-source with wrong number of fields
 		`<meta name="go-source" content="alice.org/pkg blah">` +
-		// meta tag for a differnt package
+		// meta tag for a different package
 		`<meta name="go-import" content="alice.org/other git https://github.com/alice/other">` +
 		// meta tag for a different package
 		`<meta name="go-import" content="alice.org/other git https://github.com/alice/other">` +
